def test_respects_effective_price_when_taxes_are_known(self): # Assign UK style strategy (20% tax) self.basket.strategy = strategy.UK() # Add sufficient products to meet condition add_product(self.basket, price=D('6'), quantity=2) # Ensure discount is calculated against tax-inclusive price result = self.offer.apply_benefit(self.basket) self.assertEqual(2 * D('6.00') * D('1.2') * D('0.20'), result.discount)
def test_respects_effective_price_when_taxes_are_known_and_offer_is_tax_inclusive(self): self.basket.strategy = strategy.UK() add_product(self.basket, price=D('10'), quantity=2) result = self.offer.apply_benefit(self.basket) self.assertEqual(2 * D('10.00') * D('1.2') * D('0.20'), result.discount) order = create_order(basket=self.basket) self.assertEqual(order.total_before_discounts_incl_tax, D('24')) self.assertEqual(order.total_before_discounts_excl_tax, D('20')) self.assertEqual(order.total_discount_excl_tax, D('4')) self.assertEqual(order.total_discount_incl_tax, D('4.8'))
def test_respects_effective_price_when_taxes_are_known(self): # Assign UK style strategy (20% tax) self.basket.strategy = strategy.UK() # Add sufficient products to meet condition add_product(self.basket, price=D('10'), quantity=2) # Ensure discount is calculated against tax-inclusive price result = self.offer.apply_benefit(self.basket) self.assertEqual(2 * D('10.00') * D('1.2') * D('0.20'), result.discount) order = create_order(basket=self.basket) self.assertEqual(order.basket_total_before_discounts_excl_tax, D('20')) self.assertEqual(order.basket_total_before_discounts_incl_tax, D('24')) self.assertEqual(order.total_before_discounts_incl_tax, D('24')) self.assertEqual(order.total_before_discounts_excl_tax, D('20')) self.assertEqual(order.total_discount_excl_tax, D('4.8')) self.assertEqual(order.total_discount_incl_tax, D('5.76'))
def test_pricing_policy_unavailable_if_no_price_excl_tax(self): product = factories.ProductFactory(stockrecords=[]) factories.StockRecordFactory(price_excl_tax=None, product=product) info = strategy.UK().fetch_for_product(product) self.assertFalse(info.price.exists)
def setUp(self): self.strategy = strategy.UK()