Basic total generation, no discounts for now
This commit is contained in:
+8
-2
@@ -12,7 +12,7 @@ class Checkout
|
|||||||
end
|
end
|
||||||
|
|
||||||
def add(item)
|
def add(item)
|
||||||
raise InvalidItem unless valid_item(item)
|
raise InvalidItem unless valid_item?(item)
|
||||||
@items.push item
|
@items.push item
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -20,9 +20,15 @@ class Checkout
|
|||||||
@items
|
@items
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def total
|
||||||
|
@items.reduce(0.00) do |running_total, item|
|
||||||
|
running_total + AVAILABLE_ITEMS[item]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def valid_item(item)
|
def valid_item?(item)
|
||||||
return AVAILABLE_ITEMS.keys.include?(item)
|
return AVAILABLE_ITEMS.keys.include?(item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -5,5 +5,5 @@ checkout = Checkout.new()
|
|||||||
checkout.add(:PI5)
|
checkout.add(:PI5)
|
||||||
checkout.add(:ZERO2W)
|
checkout.add(:ZERO2W)
|
||||||
|
|
||||||
checkout.items # ["PI5", "ZERO2W"]
|
puts checkout.items # ["PI5", "ZERO2W"]
|
||||||
checkout.total # 75.00
|
puts checkout.total # 75.00
|
||||||
|
|||||||
@@ -16,7 +16,22 @@ class TestCheckout < Minitest::Test
|
|||||||
def test_that_allowed_items_are_added
|
def test_that_allowed_items_are_added
|
||||||
@checkout.add(:PI5)
|
@checkout.add(:PI5)
|
||||||
@checkout.add(:ZERO2W)
|
@checkout.add(:ZERO2W)
|
||||||
|
@checkout.add(:PICO2)
|
||||||
|
|
||||||
assert_equal [:PI5, :ZERO2W].sort, @checkout.items.sort
|
assert_equal [:PI5, :ZERO2W, :PICO2].sort, @checkout.items.sort
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_that_total_is_the_sum_of_all_items # Not accounting for discounts at the moment
|
||||||
|
@checkout.add(:PI5) # 60.00
|
||||||
|
@checkout.add(:ZERO2W) # 15.00
|
||||||
|
@checkout.add(:PICO2) # 4.00
|
||||||
|
# -----
|
||||||
|
# 79.00 total
|
||||||
|
|
||||||
|
assert_equal 79.00, @checkout.total
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_that_an_empty_checkout_total_is_zero
|
||||||
|
assert_equal 0.00, @checkout.total
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Reference in New Issue
Block a user