44 lines
1.3 KiB
Ruby
44 lines
1.3 KiB
Ruby
|
require 'minitest/autorun'
|
||
|
require 'vat_rate'
|
||
|
|
||
|
class TestVatRate < Minitest::Test
|
||
|
def test_should_check_data
|
||
|
assert_kind_of Hash, VatRate::RATES
|
||
|
|
||
|
VatRate::CATEGORIES.each do |category|
|
||
|
VatRate::RATES["#{category}_rates"].each do |country, rates|
|
||
|
assert_kind_of String, country
|
||
|
assert_kind_of Array, rates
|
||
|
rates.each do |rate|
|
||
|
assert rate.key?('rate')
|
||
|
assert_kind_of Numeric, rate['rate']
|
||
|
assert_kind_of Date, rate['from'] if rate['from']
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_should_initialize_rate
|
||
|
vat_rate = VatRate.new(country: :FR)
|
||
|
assert_equal 20, vat_rate.rate
|
||
|
|
||
|
vat_rate = VatRate.new(country: "FR")
|
||
|
assert_equal 20, vat_rate.rate
|
||
|
end
|
||
|
|
||
|
def test_should_get_correct_rate_for_date
|
||
|
vat_rate = VatRate.new(country: "FR", date: Date.new(2011))
|
||
|
assert_equal 19.6, vat_rate.rate
|
||
|
end
|
||
|
|
||
|
def test_should_get_amounts
|
||
|
vat_rate = VatRate.new(country: "FR")
|
||
|
assert_equal 20, vat_rate.rate
|
||
|
assert_equal 40, vat_rate.vat_amount(200)
|
||
|
assert_equal 40, vat_rate.vat_amount(200, has_vat: false)
|
||
|
assert_equal 40, vat_rate.vat_amount(240, has_vat: true)
|
||
|
assert_equal 240, vat_rate.amount_with_vat(200)
|
||
|
assert_equal 200, vat_rate.amount_without_vat(240)
|
||
|
end
|
||
|
end
|