def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.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 test_count_condition_is_applied_multpile_times(self): benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.00')) for i in range(10): self.basket.add_product(create_product(price=Decimal('5.00'), upc='upc_%i' % i), 1) product_range = Range.objects.create(name="All products", includes_all_products=True) condition = CountCondition(range=product_range, type="Count", value=2) first_discount = benefit.apply(self.basket, condition=condition) self.assertEquals(Decimal('10.00'), first_discount) second_discount = benefit.apply(self.basket, condition=condition) self.assertEquals(Decimal('10.00'), second_discount)
def test_absolute_does_not_consume_twice(self): product = create_product(Decimal('25000')) rng = Range.objects.create(name='Dummy') rng.included_products.add(product) condition = ValueCondition(range=rng, type='Value', value=Decimal('5000')) basket = Basket.objects.create() basket.add_product(product, 5) benefit = AbsoluteDiscountBenefit(range=rng, type='Absolute', value=Decimal('100')) self.assertTrue(condition.is_satisfied(basket)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('0'), benefit.apply(basket, condition))
def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.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 test_count_condition_is_applied_multpile_times(self): benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.00')) for i in range(10): self.basket.add_product( create_product(price=Decimal('5.00'), upc='upc_%i' % i), 1) product_range = Range.objects.create(name="All products", includes_all_products=True) condition = CountCondition(range=product_range, type="Count", value=2) first_discount = benefit.apply(self.basket, condition=condition) self.assertEquals(Decimal('10.00'), first_discount) second_discount = benefit.apply(self.basket, condition=condition) self.assertEquals(Decimal('10.00'), second_discount)
class AbsoluteDiscountBenefitTest(OfferTest): def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.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('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('10.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('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): # Add 3 items to make total 15.00 self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('10.00'), first_discount) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('5.00'), second_discount)
class AbsoluteDiscountBenefitTest(OfferTest): def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.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(AbsoluteDiscountBenefitTest, 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('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('10.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('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): # Add 3 items to make total 15.00 self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('10.00'), first_discount) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('5.00'), second_discount)
class AbsoluteDiscountBenefitTest(OfferTest): def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.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(AbsoluteDiscountBenefitTest, 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('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('10.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('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): # Add 3 items to make total 15.00 self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('10.00'), first_discount) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('5.00'), second_discount)
class AbsoluteDiscountBenefitTest(OfferTest): def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.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(AbsoluteDiscountBenefitTest, 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('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('10.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('5.00'), self.benefit.apply(self.basket)) def test_discount_can_only_be_applied_once(self): # Add 3 items to make total 15.00 self.basket.add_product(self.item, 3) first_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('10.00'), first_discount) second_discount = self.benefit.apply(self.basket) self.assertEquals(Decimal('5.00'), second_discount) def test_absolute_does_not_consume_twice(self): product = create_product(Decimal('25000')) rng = Range.objects.create(name='Dummy') rng.included_products.add(product) condition = ValueCondition(range=rng, type='Value', value=Decimal('5000')) basket = Basket.objects.create() basket.add_product(product, 5) benefit = AbsoluteDiscountBenefit(range=rng, type='Absolute', value=Decimal('100')) self.assertTrue(condition.is_satisfied(basket)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('100'), benefit.apply(basket, condition)) self.assertEquals(Decimal('0'), benefit.apply(basket, condition))
def setUp(self): super(AbsoluteDiscountBenefitTest, self).setUp() self.benefit = AbsoluteDiscountBenefit(range=self.range, type="Absolute", value=Decimal('10.00')) self.item = create_product(price=Decimal('5.00'))