Skip to content
This repository has been archived by the owner on Oct 27, 2022. It is now read-only.

Commit

Permalink
refactor offer to object and add offers as attributes to cart
Browse files Browse the repository at this point in the history
  • Loading branch information
cleder committed Aug 31, 2014
1 parent e7a9ecc commit db433f0
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 21 deletions.
1 change: 1 addition & 0 deletions okfncart/offers.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def add_discount(self, cart):
cart._add_discount('%s b2g3rd' % product, -1 * num * price)



class OfferP1p2XpcOff(Offer):
'''
get p2_discount (*100%) off product2 if you buy a product1 at the same time
Expand Down
25 changes: 4 additions & 21 deletions okfncart/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,91 +103,74 @@ def test_2_for_1(self):
offer = offers.OfferBogof('ice cream')
my_cart = cart.Cart(products, [offer])
self.assertEqual(my_cart.get_price(),0)
#offers.product_bogof(my_cart, 'ice cream')
self.assertEqual(my_cart.get_price(),0)
my_cart.add('ice cream', 1)
#offers.product_bogof(my_cart, 'ice cream')
self.assertEqual(my_cart.contents['ice cream'], 1)
self.assertEqual(my_cart.get_price(),3.49)
my_cart.add('ice cream', 1)
self.assertEqual(my_cart.contents['ice cream'], 2)
#offers.product_bogof(my_cart, 'ice cream')
self.assertEqual(my_cart.get_price(),3.49)
my_cart.add('ice cream', 1)
self.assertEqual(my_cart.contents['ice cream'], 3)
#offers.product_bogof(my_cart, 'ice cream')
self.assertEqual(my_cart.get_price(),3.49*2)
my_cart.add('ice cream', 1)
self.assertEqual(my_cart.contents['ice cream'], 4)
#offers.product_bogof(my_cart, 'ice cream')
self.assertEqual(my_cart.get_price(),3.49*2)
my_cart.add('ice cream', 1)
self.assertEqual(my_cart.contents['ice cream'], 5)
#offers.product_bogof(my_cart, 'ice cream')
self.assertEqual(round(1.2, 2), round(1.200002,2))
self.assertEqual(round(my_cart.get_price(),2),
round(3.49*2 + 3.49,2))

def test_3_for_2(self):
products = {'snickers bar': 0.7, 'strawberries': 2.0,
'apple': 0.15, 'ice cream': 3.49}
my_cart = cart.Cart(products)
offer = offers.OfferB2g3rdf('strawberries')
my_cart = cart.Cart(products, [offer])
self.assertEqual(my_cart.get_price(),0)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.get_price(),0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 1)
self.assertEqual(my_cart.get_price(),2.0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 2)
self.assertEqual(my_cart.get_price(),4.0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 3)
self.assertEqual(my_cart.get_price(),4.0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 4)
self.assertEqual(my_cart.get_price(),6.0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 5)
self.assertEqual(my_cart.get_price(),8.0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 6)
self.assertEqual(my_cart.get_price(),8.0)
my_cart.add('strawberries', 1)
offers.product_b2g3rdf(my_cart, 'strawberries')
self.assertEqual(my_cart.contents['strawberries'], 7)
self.assertEqual(my_cart.get_price(),10.0)

def test_20pc_off_snickers_4_mars(self):
# changed the price of snickers to 1.0
products = {'snickers': 1.0, 'strawberries': 2.0,
'apple': 0.15, 'ice cream': 3.49, 'mars': 0.5}
my_cart = cart.Cart(products)
offer = offers.OfferP1p2XpcOff('mars', 'snickers', 0.2)
my_cart = cart.Cart(products, [offer])
self.assertEqual(my_cart.get_price(),0)
offers.p1_p2_off(my_cart, 'mars', 'snickers', 0.2)
self.assertEqual(my_cart.get_price(),0)
my_cart.add('mars', 1)
offers.p1_p2_off(my_cart, 'mars', 'snickers', 0.2)
self.assertEqual(my_cart.contents['mars'], 1)
self.assertEqual(my_cart.get_price(),0.5)
my_cart.add('snickers', 1)
offers.p1_p2_off(my_cart, 'mars', 'snickers', 0.2)
self.assertEqual(my_cart.contents['mars'], 1)
self.assertEqual(my_cart.contents['snickers'], 1)
self.assertEqual(my_cart.get_price(),1.3)
my_cart.add('snickers', 1)
offers.p1_p2_off(my_cart, 'mars', 'snickers', 0.2)
self.assertEqual(my_cart.contents['mars'], 1)
self.assertEqual(my_cart.contents['snickers'], 2)
self.assertEqual(my_cart.get_price(),2.3)
my_cart.add('mars', 1)
offers.p1_p2_off(my_cart, 'mars', 'snickers', 0.2)
self.assertEqual(my_cart.contents['mars'], 2)
self.assertEqual(my_cart.contents['snickers'], 2)
self.assertEqual(my_cart.get_price(),2.6)
Expand Down

0 comments on commit db433f0

Please sign in to comment.