Files
ruby-checkout/checkout.rb
T
2026-07-15 10:57:09 -04:00

49 lines
755 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
pre_discount_total - current_discount
end
private
def valid_item?(item)
return AVAILABLE_ITEMS.keys.include?(item)
end
def current_discount
# BOGOF ZERO2W
discount = (@items.count(:ZERO2W) / 2.0).floor * AVAILABLE_ITEMS[:ZERO2W]
# TODO: Bulk PICO2
return discount
end
def pre_discount_total
@items.reduce(0.00) do |running_total, item|
running_total + AVAILABLE_ITEMS[item]
end
end
end