mirror of
https://github.com/we-promise/sure.git
synced 2026-04-18 11:34:13 +00:00
* FIX prefer provider rate always - add debugging also * Move logic from securities over * FIXes * Review fixes * Update provided.rb --------- Signed-off-by: soky srm <sokysrm@gmail.com>
79 lines
2.6 KiB
Ruby
79 lines
2.6 KiB
Ruby
require "test_helper"
|
|
|
|
class ExchangeRatePairTest < ActiveSupport::TestCase
|
|
test "for_pair creates a new pair if none exists" do
|
|
ExchangeRatePair.delete_all
|
|
pair = ExchangeRatePair.for_pair(from: "USD", to: "EUR")
|
|
|
|
assert_equal "USD", pair.from_currency
|
|
assert_equal "EUR", pair.to_currency
|
|
assert_nil pair.first_provider_rate_on
|
|
end
|
|
|
|
test "for_pair returns existing pair idempotently" do
|
|
ExchangeRatePair.delete_all
|
|
pair1 = ExchangeRatePair.for_pair(from: "USD", to: "EUR")
|
|
pair2 = ExchangeRatePair.for_pair(from: "USD", to: "EUR")
|
|
|
|
assert_equal pair1.id, pair2.id
|
|
end
|
|
|
|
test "for_pair auto-resets clamp when provider changes" do
|
|
ExchangeRatePair.delete_all
|
|
|
|
original_provider = Setting.exchange_rate_provider
|
|
begin
|
|
Setting.exchange_rate_provider = "twelve_data"
|
|
ExchangeRatePair.create!(
|
|
from_currency: "USD",
|
|
to_currency: "EUR",
|
|
first_provider_rate_on: 1.year.ago.to_date,
|
|
provider_name: "twelve_data"
|
|
)
|
|
|
|
Setting.exchange_rate_provider = "yahoo_finance"
|
|
refreshed = ExchangeRatePair.for_pair(from: "USD", to: "EUR")
|
|
|
|
assert_nil refreshed.first_provider_rate_on
|
|
assert_equal "yahoo_finance", refreshed.provider_name
|
|
ensure
|
|
Setting.exchange_rate_provider = original_provider
|
|
end
|
|
end
|
|
|
|
test "record_first_provider_rate_on sets date on NULL" do
|
|
ExchangeRatePair.delete_all
|
|
ExchangeRatePair.for_pair(from: "USD", to: "EUR")
|
|
|
|
ExchangeRatePair.record_first_provider_rate_on(from: "USD", to: "EUR", date: 6.months.ago.to_date)
|
|
|
|
pair = ExchangeRatePair.find_by!(from_currency: "USD", to_currency: "EUR")
|
|
assert_equal 6.months.ago.to_date, pair.first_provider_rate_on
|
|
end
|
|
|
|
test "record_first_provider_rate_on moves earlier but not forward" do
|
|
ExchangeRatePair.delete_all
|
|
|
|
original_provider = Setting.exchange_rate_provider
|
|
begin
|
|
Setting.exchange_rate_provider = "twelve_data"
|
|
ExchangeRatePair.create!(
|
|
from_currency: "USD",
|
|
to_currency: "EUR",
|
|
first_provider_rate_on: 6.months.ago.to_date,
|
|
provider_name: "twelve_data"
|
|
)
|
|
|
|
ExchangeRatePair.record_first_provider_rate_on(from: "USD", to: "EUR", date: 1.year.ago.to_date)
|
|
pair = ExchangeRatePair.find_by!(from_currency: "USD", to_currency: "EUR")
|
|
assert_equal 1.year.ago.to_date, pair.first_provider_rate_on
|
|
|
|
ExchangeRatePair.record_first_provider_rate_on(from: "USD", to: "EUR", date: 3.months.ago.to_date)
|
|
pair.reload
|
|
assert_equal 1.year.ago.to_date, pair.first_provider_rate_on
|
|
ensure
|
|
Setting.exchange_rate_provider = original_provider
|
|
end
|
|
end
|
|
end
|