class CountConditionTest(OfferTest): def setUp(self): super(CountConditionTest, self).setUp() self.cond = CountCondition(range=self.range, type="Count", value=2) def test_empty_basket_fails_condition(self): self.assertFalse(self.cond.is_satisfied(self.basket)) def test_matching_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 2) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_greater_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 3) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_consumption(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertEquals(1, self.basket.all_lines()[0].quantity_without_discount) def test_is_satisfied_accounts_for_consumed_items(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertFalse(self.cond.is_satisfied(self.basket))
class CountConditionTest(OfferTest): def setUp(self): super(CountConditionTest, self).setUp() self.cond = CountCondition(range=self.range, type="Count", value=2) def test_empty_basket_fails_condition(self): self.assertFalse(self.cond.is_satisfied(self.basket)) def test_matching_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 2) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_greater_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 3) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_consumption(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertEquals(1, self.basket.all_lines()[0].quantity_without_discount) def test_is_satisfied_accounts_for_consumed_items(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertFalse(self.cond.is_satisfied(self.basket))
class CountConditionTest(OfferTest): def setUp(self): super(CountConditionTest, self).setUp() self.cond = CountCondition(range=self.range, type="Count", value=2) def test_empty_basket_fails_condition(self): self.assertFalse(self.cond.is_satisfied(self.basket)) def test_empty_basket_fails_partial_condition(self): self.assertFalse(self.cond.is_partially_satisfied(self.basket)) def test_smaller_quantity_basket_passes_partial_condition(self): self.basket.add_product(create_product(), 1) self.assertTrue(self.cond.is_partially_satisfied(self.basket)) def test_smaller_quantity_basket_upsell_message(self): self.basket.add_product(create_product(), 1) self.assertTrue('Buy 1 more product from ' in self.cond.get_upsell_message(self.basket)) def test_matching_quantity_basket_fails_partial_condition(self): self.basket.add_product(create_product(), 2) self.assertFalse(self.cond.is_partially_satisfied(self.basket)) def test_matching_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 2) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_greater_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 3) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_consumption(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertEquals(1, self.basket.all_lines()[0].quantity_without_discount) def test_is_satisfied_accounts_for_consumed_items(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertFalse(self.cond.is_satisfied(self.basket)) 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 CountConditionTest(OfferTest): def setUp(self): super(CountConditionTest, self).setUp() self.cond = CountCondition(range=self.range, type="Count", value=2) def test_empty_basket_fails_condition(self): self.assertFalse(self.cond.is_satisfied(self.basket)) def test_empty_basket_fails_partial_condition(self): self.assertFalse(self.cond.is_partially_satisfied(self.basket)) def test_smaller_quantity_basket_passes_partial_condition(self): self.basket.add_product(create_product(), 1) self.assertTrue(self.cond.is_partially_satisfied(self.basket)) def test_smaller_quantity_basket_upsell_message(self): self.basket.add_product(create_product(), 1) self.assertTrue('Buy 1 more product from ' in self.cond.get_upsell_message(self.basket)) def test_matching_quantity_basket_fails_partial_condition(self): self.basket.add_product(create_product(), 2) self.assertFalse(self.cond.is_partially_satisfied(self.basket)) def test_matching_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 2) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_greater_quantity_basket_passes_condition(self): self.basket.add_product(create_product(), 3) self.assertTrue(self.cond.is_satisfied(self.basket)) def test_consumption(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertEquals(1, self.basket.all_lines()[0].quantity_without_discount) def test_is_satisfied_accounts_for_consumed_items(self): self.basket.add_product(create_product(), 3) self.cond.consume_items(self.basket) self.assertFalse(self.cond.is_satisfied(self.basket)) 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)