Files
api2/tests/lib/test_prices.py
T

263 lines
8.1 KiB
Python

# coding=UTF-8
import unittest2
import mock
from api.lib.prices import *
from tests.factories import (
DesignerFactory,
ContractCustomerFactory,
InquiryFactory,
MarketFactory,
)
from api.models import Inquiry, Product, Material
sweden = MarketFactory.build(name="SE", exchange_rate=1, price_adjustments=1, vat=1.25)
denmark = MarketFactory.build(
name="DK", price_adjustments=1.185, exchange_rate=0.799000, vat=1.25
)
us = MarketFactory.build(name="US", price_adjustments=1.06, exchange_rate=0.1198, vat=1)
nl = MarketFactory.build(name="NL", price_adjustments=1.15, exchange_rate=0.1, vat=1.21)
eu = MarketFactory.build(name="EU", price_adjustments=1.13, exchange_rate=0.1, vat=1.25)
designer = DesignerFactory.build(
pricepremium_wallpaper=17.647,
pricepremium_canvas=8,
pricepremium_poster=15.50,
pricepremium_framed_print=13,
)
reseller = ContractCustomerFactory.build(pricepremium=15)
designer_moomin = DesignerFactory.build(
pricepremium_wallpaper=2,
pricepremium_canvas=3,
pricepremium_poster=4,
pricepremium_framed_print=7,
)
standard_wallpaper = Material(name="standard-wallpaper", price=23600)
premium_wallpaper = Material(name="premium-wallpaper", price=26000)
standard_canvas = Material(name="standard-canvas", price=79920)
class TestPrice(unittest2.TestCase):
def test_m2_price(self):
self.assertEqual(
236,
wallpaper_m2_price(
material=standard_wallpaper, market=sweden, inc_vat=False
),
)
self.assertEqual(
260,
wallpaper_m2_price(
material=premium_wallpaper, market=sweden, inc_vat=False
),
)
self.assertEqual(
295,
wallpaper_m2_price(
material=standard_wallpaper, market=sweden, inc_vat=True
),
)
self.assertEqual(
223,
wallpaper_m2_price(
material=standard_wallpaper, market=denmark, inc_vat=False
),
)
inquiry = Inquiry(pricepremium=36.029411)
self.assertEqual(
42,
wallpaper_m2_price(
material=standard_wallpaper,
market=eu,
reseller=reseller,
inquiry=inquiry,
inc_vat=False,
),
)
def test_wallpaper_price(self):
self.assertEqual(
295,
wallpaper_price(
width=1, height=1, material=standard_wallpaper, market=sweden
),
)
self.assertEqual(
295,
wallpaper_price(
width=100, height=100, material=standard_wallpaper, market=sweden
),
)
self.assertEqual(
1180,
wallpaper_price(
width=200, height=200, material=standard_wallpaper, market=sweden
),
)
self.assertEqual(
325,
wallpaper_price(
width=100, height=100, material=premium_wallpaper, market=sweden
),
)
self.assertEqual(
279,
wallpaper_price(
width=100, height=100, material=standard_wallpaper, market=denmark
),
)
self.assertEqual(
236,
wallpaper_price(
width=100,
height=100,
material=standard_wallpaper,
market=sweden,
inc_vat=False,
),
)
# designer
self.assertEqual(
347,
wallpaper_price(
width=100,
height=100,
material=standard_wallpaper,
market=sweden,
designer=designer,
),
)
self.assertEqual(
329,
wallpaper_price(
width=100,
height=100,
material=standard_wallpaper,
market=denmark,
designer=designer,
),
)
# reseller stores
self.assertEqual(
339,
wallpaper_price(
width=100,
height=100,
material=standard_wallpaper,
market=sweden,
reseller=reseller,
),
)
self.assertEqual(
399,
wallpaper_price(
width=100,
height=100,
material=standard_wallpaper,
market=sweden,
designer=designer,
reseller=reseller,
),
)
self.assertEqual(
154,
wallpaper_price(
width=100,
height=100,
material=standard_wallpaper,
market=sweden,
reseller=ContractCustomerFactory(pricepremium=-47.74),
),
)
def test_wallpaper_price_us(self):
self.assertEqual(
60,
wallpaper_price(
width=100, height=100, material=standard_wallpaper, market=us
),
"Minium price for US is 2 sqm",
)
def test_wallpaper_custom_inquiry_price(self):
with mock.patch.object(Inquiry, "market", nl):
inquiry = Inquiry(
product_group="photo-wallpaper",
pricepremium=0,
width=350,
height=270,
price_effect=0,
price_retouch=160.00,
material=standard_wallpaper,
)
self.assertEqual(333, inquiry_price(inquiry))
self.assertEqual(310, inquiry_price(inquiry, inc_price_retouch=False))
self.assertEqual(160, inquiry.price_retouch)
self.assertEqual(18.4, inquiry.local_price_retouch(rounded=False))
self.assertEqual(
22, inquiry.local_price_retouch(rounded=True, inc_vat=True)
)
# test with different material
self.assertEqual(
342,
inquiry_price(
inquiry, inc_price_retouch=False, material=premium_wallpaper
),
)
self.assertEqual(364, inquiry_price(inquiry, material=premium_wallpaper))
def test_wallpaper_product_inquiry_price(self):
designer = DesignerFactory()
designer.pricepremium_wallpaper = 4
product = Product(designer=designer)
with mock.patch.object(Inquiry, "market", sweden):
inquiry = Inquiry(
product_group="photo-wallpaper",
pricepremium=0,
width=350,
height=280,
price_retouch=0,
material=standard_wallpaper,
product=product,
)
self.assertEqual(3007, inquiry_price(inquiry))
self.assertEqual(3007, inquiry_price(inquiry, inc_price_retouch=False))
self.assertEqual(3312, inquiry_price(inquiry, material=premium_wallpaper))
def test_wallpaper_product2_inquiry_price(self):
designer = DesignerFactory()
designer.pricepremium_wallpaper = 4
product = Product(designer=designer)
with mock.patch.object(Inquiry, "market", sweden):
inquiry = Inquiry(
product_group="photo-wallpaper",
pricepremium=25,
width=250,
height=400,
price_retouch=200,
material=standard_wallpaper,
product=product,
)
self.assertEqual(3835, inquiry_price(inquiry, inc_price_retouch=False))
self.assertEqual(200, inquiry.price_retouch)
self.assertEqual(
250, inquiry.local_price_retouch(rounded=True, inc_vat=True)
)
def test_wallpaper_kit_price(self):
self.assertEqual(143.2, wallpaper_kit_price(market=sweden, rounded=False, inc_vat=False))
self.assertEqual(179.0, wallpaper_kit_price(market=sweden, rounded=False, inc_vat=True))
self.assertEqual(18.0, wallpaper_kit_price(market=us))
self.assertEqual(169.0, wallpaper_kit_price(market=denmark))