# 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))