Beispiel #1
0
 def test_rules_with_only_items_add_item_values_in_the_cart(self):
     my_rules = {Item('VOUCHER', 'Gift Card', 5.0),
                 Item('TSHIRT', 'Summer T-Shirt', 20.0),
                 Item('PANTS', 'Summer Pants', 7.5)}
     sut = Checkout(my_rules)
     sut.add_item('VOUCHER')
     sut.add_item('TSHIRT')
     sut.add_item('PANTS')
     expected_total = 32.5
     self.assertEqual(expected_total, sut.get_total())
Beispiel #2
0
    def test_apply_2x1_n_3_item_discounts_in_cart(self):
        voucher_desc = Item('VOUCHER', 'Gift Card', 5.0)
        tshirt_desc = Item('TSHIRT', 'Summer T-Shirt', 20.0)
        pants_desc = Item('PANTS', 'Summer Pants', 7.5)

        my_rules = {voucher_desc, tshirt_desc, pants_desc,
                    TwoForOneItem(voucher_desc),
                    ReducedPriceIfNOrMoreItems(tshirt_desc, 3, 19.0)}

        sut = Checkout(my_rules)
        for it in ['VOUCHER', 'TSHIRT', 'VOUCHER', 'VOUCHER', 'PANTS', 'TSHIRT', 'TSHIRT']:
            sut.add_item(it)

        expected_total = 74.50

        self.assertEqual(expected_total, sut.get_total())
Beispiel #3
0
    def test_two_for_one_discount_is_applied(self):
        voucher_desc = Item('VOUCHER', 'Gift Card', 5.0)
        tshirt_desc = Item('TSHIRT', 'Summer T-Shirt', 20.0)
        pants_desc = Item('PANTS', 'Summer Pants', 7.5)

        my_rules = {voucher_desc, tshirt_desc, pants_desc,
                    TwoForOneItem(voucher_desc),
                    ReducedPriceIfNOrMoreItems(tshirt_desc, 3, 19.0)}

        sut = Checkout(my_rules)
        sut.add_item('VOUCHER')
        sut.add_item('TSHIRT')
        sut.add_item('VOUCHER')
        expected_total = 25.0

        self.assertEqual(expected_total, sut.get_total())
Beispiel #4
0
    def test_total_remains_unaltered_when_discounts_do_not_apply(self):
        voucher_desc = Item('VOUCHER', 'Gift Card', 5.0)
        tshirt_desc = Item('TSHIRT', 'Summer T-Shirt', 20.0)
        pants_desc = Item('PANTS', 'Summer Pants', 7.5)

        my_rules = {voucher_desc, tshirt_desc, pants_desc,
                    TwoForOneItem(voucher_desc),
                    ReducedPriceIfNOrMoreItems(tshirt_desc, 3, 19.0)}

        sut = Checkout(my_rules)
        sut.add_item('VOUCHER')
        sut.add_item('TSHIRT')
        sut.add_item('PANTS')
        expected_total = 32.5

        self.assertEqual(expected_total, sut.get_total())
Beispiel #5
0
class CheckoutController:
    voucher_desc = Item('VOUCHER', 'Gift Card', 5.0)
    tshirt_desc = Item('TSHIRT', 'Summer T-Shirt', 20.0)
    pants_desc = Item('PANTS', 'Summer Pants', 7.5)

    rules = {voucher_desc, tshirt_desc, pants_desc,
             TwoForOneItem(voucher_desc),
             ReducedPriceIfNOrMoreItems(tshirt_desc, 3, 19.0)}

    def __init__(self):
        self.checkout = Checkout(self.rules)

    def clear_checkout(self):
        self.checkout = Checkout(self.rules)

    def add_item(self, item_name):
        try:
            self.checkout.add_item(item_name)
            return True
        except ValueError:
            return False

    def get_total(self):
        return self.checkout.get_total()
Beispiel #6
0
 def test_empty_cart_with_no_rules_is_0(self):
     my_rules = set()
     sut = Checkout(my_rules)
     self.assertEqual(0.0, sut.get_total())
Beispiel #7
0
 def test_emtpy_cart_with_rules_is_0(self):
     my_rules = {Item('VOUCHER', 'Gift Card', 5.0)}
     sut = Checkout(my_rules)
     self.assertEqual(0.0, sut.get_total())