import json import flask_testing from api import create_app, db from api.models.product import Material, Product, Currencies from api.models import Inquiry, Designer, Market class TestEndpoints(flask_testing.TestCase): def create_app(self): return create_app("tests.config") def setUp(self): db.create_all() def tearDown(self): db.session.remove() db.drop_all() def _add_market(self): currency = Currencies(iso3char="SEK", exchange_rate=1) db.session.add(currency) market = Market(name="SE", vat=1.25, currency="SEK", price_adjustments=1) db.session.add(market) db.session.commit() return market def _add_material(self, name, groupid, price): material = Material(name=name, price=price) db.session.add(material) db.session.commit() return material def _add_inquiry(self, market, product_group, price_retouch=100): inquiry = Inquiry( market=market, product_group=product_group, price_retouch=price_retouch, ) db.session.add(inquiry) db.session.commit() return inquiry def _add_designer(self, pricepremium_wallpaper=0, pricepremium_canvas=0): designer = Designer( "Disney", "disney", "US", "USD", pricepremium_wallpaper=pricepremium_wallpaper, pricepremium_canvas=pricepremium_canvas, ) db.session.add(designer) db.session.commit() return designer def _add_product(self, designer=None): product = Product(designer=designer) db.session.add(product) db.session.commit() return product def test_wallpaper(self): self._add_market() self._add_material("standard-wallpaper", 1, 23600) self._add_material("premium-wallpaper", 1, 26000) response = self.client.get("/prices/wallpaper?width=200&height=10&market=1") self.assert200(response) expected = [ { "m2_price": 295.0, "m2_price_excl_vat": 236.0, "price_excl_vat": 236.0, "price": 295.0, "material": "standard-wallpaper", "material_id": 1, }, { "m2_price": 325.0, "m2_price_excl_vat": 260.0, "price_excl_vat": 260.0, "price": 325.0, "material": "premium-wallpaper", "material_id": 2, }, ] self.assertEqual(expected, response.json["data"]) def test_wallpaper_with_product(self): self._add_market() self._add_material("standard-wallpaper", 1, 23600) self._add_material("premium-wallpaper", 1, 26000) designer = self._add_designer(pricepremium_wallpaper=4) product = self._add_product(designer) response = self.client.get( "/prices/wallpaper?width=200&height=200&market=1&product=1" ) expected = [ { "price": 1227.2, "price_excl_vat": 981.76, "material_id": 1, "m2_price": 306.8, "m2_price_excl_vat": 245.44, "material": "standard-wallpaper", }, { "price": 1352.0000000000002, "price_excl_vat": 1081.6000000000001, "material_id": 2, "m2_price": 338.00000000000006, "m2_price_excl_vat": 270.40000000000003, "material": "premium-wallpaper", }, ] self.assertEqual(expected, response.json["data"]) def test_inquiry_wallpaper(self): market = self._add_market() self._add_material("standard-wallpaper", 1, 236) self._add_material("premium-wallpaper", 1, 260) self._add_inquiry(market=market, product_group="photo-wallpaper") response = self.client.get("/prices/inquiry/1?width=100&height=100") self.assert200(response) self.assertEqual("wallpaper", response.json["group"])