Files

129 lines
4.3 KiB
Python

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
from unittest.mock import patch
class TestEndpoints(flask_testing.TestCase):
def create_app(self):
return create_app("tests.config")
def setUp(self):
db.create_all()
self._price_adjustments_patcher = patch('api.lib.prices.get_price_adjustment', return_value=1.0)
self._price_adjustments_patcher.start()
def tearDown(self):
db.session.remove()
db.drop_all()
self._price_adjustments_patcher.stop()
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"])