35 lines
508 B
Ruby
35 lines
508 B
Ruby
class Checkout
|
|
class InvalidItem < StandardError; end
|
|
|
|
AVAILABLE_ITEMS = {
|
|
PI5: 60.00,
|
|
ZERO2W: 15.00,
|
|
PICO2: 4.00
|
|
}
|
|
|
|
def initialize
|
|
@items = []
|
|
end
|
|
|
|
def add(item)
|
|
raise InvalidItem unless valid_item?(item)
|
|
@items.push item
|
|
end
|
|
|
|
def items
|
|
@items
|
|
end
|
|
|
|
def total
|
|
@items.reduce(0.00) do |running_total, item|
|
|
running_total + AVAILABLE_ITEMS[item]
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def valid_item?(item)
|
|
return AVAILABLE_ITEMS.keys.include?(item)
|
|
end
|
|
end
|