2024-03-27 09:16:00 -06:00
|
|
|
require "test_helper"
|
|
|
|
|
|
|
|
module ExchangeRateProviderInterfaceTest
|
|
|
|
extend ActiveSupport::Testing::Declarative
|
|
|
|
|
2025-03-17 11:54:53 -04:00
|
|
|
test "fetches single exchange rate" do
|
|
|
|
VCR.use_cassette("#{vcr_key_prefix}/exchange_rate") do
|
|
|
|
response = @subject.fetch_exchange_rate(
|
|
|
|
from: "USD",
|
|
|
|
to: "GBP",
|
|
|
|
date: Date.parse("01.01.2024")
|
|
|
|
)
|
|
|
|
|
|
|
|
rate = response.data.rate
|
|
|
|
|
|
|
|
assert_kind_of ExchangeRate, rate
|
|
|
|
assert_equal "USD", rate.from_currency
|
|
|
|
assert_equal "GBP", rate.to_currency
|
|
|
|
end
|
2024-03-27 09:16:00 -06:00
|
|
|
end
|
|
|
|
|
2025-03-17 11:54:53 -04:00
|
|
|
test "fetches paginated exchange_rate historical data" do
|
|
|
|
VCR.use_cassette("#{vcr_key_prefix}/exchange_rates") do
|
|
|
|
response = @subject.fetch_exchange_rates(
|
|
|
|
from: "USD", to: "GBP", start_date: Date.parse("01.01.2024"), end_date: Date.parse("31.07.2024")
|
|
|
|
)
|
2024-03-27 09:16:00 -06:00
|
|
|
|
2025-03-17 11:54:53 -04:00
|
|
|
assert 213, response.data.rates.count # 213 days between 01.01.2024 and 31.07.2024
|
2024-03-27 09:16:00 -06:00
|
|
|
end
|
|
|
|
end
|
2025-03-17 11:54:53 -04:00
|
|
|
|
|
|
|
private
|
|
|
|
def vcr_key_prefix
|
|
|
|
@subject.class.name.demodulize.underscore
|
|
|
|
end
|
2024-03-27 09:16:00 -06:00
|
|
|
end
|