Add BuyXGetOneFreeDiscount
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
require "minitest/autorun"
|
||||
|
||||
require 'buy_x_get_one_free_discount.rb'
|
||||
|
||||
class BuyXGetOneFreeDiscountTest < Minitest::Test
|
||||
def test_appropriate_discount_is_applied
|
||||
unit_price = 4.00
|
||||
(2..4).each do |trigger_quantity|
|
||||
discount = BuyXGetOneFreeDiscount.new(unit_price: unit_price, trigger_quantity: trigger_quantity)
|
||||
|
||||
# Single discount at and above trigger quantity
|
||||
assert_equal unit_price, discount.discount_for_quantity(trigger_quantity)
|
||||
assert_equal unit_price, discount.discount_for_quantity(trigger_quantity + 1)
|
||||
assert_equal unit_price, discount.discount_for_quantity(trigger_quantity + trigger_quantity - 1)
|
||||
|
||||
|
||||
# No discount if less than trigger quantity
|
||||
assert_equal 0.00, discount.discount_for_quantity(trigger_quantity - 1)
|
||||
|
||||
# Double discount if double trigger quantity
|
||||
assert_equal unit_price * 2, discount.discount_for_quantity(trigger_quantity * 2)
|
||||
assert_equal unit_price * 2, discount.discount_for_quantity((trigger_quantity * 2) + 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user