class PercentageDiscountBenefitTest(OfferTest): def setUp(self): super(PercentageDiscountBenefitTest, self).setUp() self.benefit = PercentageDiscountBenefit(range=self.range, type="PercentageDiscount", value=Decimal('15.00')) self.item = create_product(price=Decimal('5.00')) def test_no_discount_for_empty_basket(self): self.assertEquals(Decimal('0.00'), self.benefit.apply(self.basket)) def test_discount_for_single_item_basket(self): self.basket.add_product(self.item, 1) self.assertEquals(Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket(self): self.basket.add_product(self.item, 3) self.assertEquals(Decimal('3') * Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket_with_max_affected_items_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 self.assertEquals(Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('0.00'), second_discount) def test_discount_can_be_applied_several_times_when_max_is_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 for i in range(1, 4): self.assertTrue(self.benefit.apply(self.basket) > 0)
class PercentageDiscountBenefitTest(OfferTest): def setUp(self): super(PercentageDiscountBenefitTest, self).setUp() self.benefit = PercentageDiscountBenefit(range=self.range, type="Percentage", value=Decimal('15.00')) self.item = create_product(price=Decimal('5.00')) self.original_offer_rounding_function = getattr(settings, 'OSCAR_OFFER_ROUNDING_FUNCTION', None) if self.original_offer_rounding_function is not None: delattr(settings, 'OSCAR_OFFER_ROUNDING_FUNCTION') def tearDown(self): super(PercentageDiscountBenefitTest, self).tearDown() if self.original_offer_rounding_function is not None: settings.OSCAR_OFFER_ROUNDING_FUNCTION = self.original_offer_rounding_function def test_no_discount_for_empty_basket(self): self.assertEquals(Decimal('0.00'), self.benefit.apply(self.basket)) def test_no_discount_for_not_discountable_product(self): self.item.is_discountable = False self.item.save() self.basket.add_product(self.item, 1) self.assertEquals(Decimal('0.00'), self.benefit.apply(self.basket)) def test_discount_for_single_item_basket(self): self.basket.add_product(self.item, 1) self.assertEquals(Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket(self): self.basket.add_product(self.item, 3) self.assertEquals(Decimal('3') * Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket_with_max_affected_items_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 self.assertEquals(Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('0.00'), second_discount) def test_discount_can_be_applied_several_times_when_max_is_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 for i in range(1, 4): self.assertTrue(self.benefit.apply(self.basket) > 0)
class PercentageDiscountBenefitTest(OfferTest): def setUp(self): super(PercentageDiscountBenefitTest, self).setUp() self.benefit = PercentageDiscountBenefit(range=self.range, type="Percentage", value=Decimal('15.00')) self.item = create_product(price=Decimal('5.00')) self.original_offer_rounding_function = getattr( settings, 'OSCAR_OFFER_ROUNDING_FUNCTION', None) if self.original_offer_rounding_function is not None: delattr(settings, 'OSCAR_OFFER_ROUNDING_FUNCTION') def tearDown(self): super(PercentageDiscountBenefitTest, self).tearDown() if self.original_offer_rounding_function is not None: settings.OSCAR_OFFER_ROUNDING_FUNCTION = self.original_offer_rounding_function def test_no_discount_for_empty_basket(self): self.assertEquals(Decimal('0.00'), self.benefit.apply(self.basket)) def test_discount_for_single_item_basket(self): self.basket.add_product(self.item, 1) self.assertEquals( Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket(self): self.basket.add_product(self.item, 3) self.assertEquals( Decimal('3') * Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket_with_max_affected_items_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 self.assertEquals( Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('0.00'), second_discount) def test_discount_can_be_applied_several_times_when_max_is_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 for i in range(1, 4): self.assertTrue(self.benefit.apply(self.basket) > 0)
class PercentageDiscountBenefitTest(OfferTest): def setUp(self): super(PercentageDiscountBenefitTest, self).setUp() self.benefit = PercentageDiscountBenefit(range=self.range, type="PercentageDiscount", value=Decimal('15.00')) self.item = create_product(price=Decimal('5.00')) def test_no_discount_for_empty_basket(self): self.assertEquals(Decimal('0.00'), self.benefit.apply(self.basket)) def test_discount_for_single_item_basket(self): self.basket.add_product(self.item, 1) self.assertEquals( Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket(self): self.basket.add_product(self.item, 3) self.assertEquals( Decimal('3') * Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_for_multi_item_basket_with_max_affected_items_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 self.assertEquals( Decimal('0.15') * Decimal('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('0.00'), second_discount) def test_discount_can_be_applied_several_times_when_max_is_set(self): self.basket.add_product(self.item, 3) self.benefit.max_affected_items = 1 for i in range(1, 4): self.assertTrue(self.benefit.apply(self.basket) > 0)