mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 12:04:08 +00:00
Provider investment fixes (#600)
* FIX issue with stock price retrieval on weekend * make weekend provisional and increase lookback * FIX query error * fix gap fill The bug: When a price is provisional but the provider doesn't return a new value (weekends), we fall back to the existing DB value instead of gap-filling from Friday's correct price. * Update importer.rb Align provider fetch to use PROVISIONAL_LOOKBACK_DAYS for consistency. In the DB fallback, derive currency from provider_prices or db_prices and filter the query accordingly. * Update 20260110122603_mark_suspicious_prices_provisional.rb * Delete db/migrate/20260110122603_mark_suspicious_prices_provisional.rb Signed-off-by: soky srm <sokysrm@gmail.com> * Update importer.rb * FIX tests * FIX last tests * Update importer_test.rb The test doesn't properly force effective_start_date to skip old dates because there are many missing dates between the old date and recent dates. Let me fix it to properly test the subset processing scenario. --------- Signed-off-by: soky srm <sokysrm@gmail.com>
This commit is contained in:
@@ -4,7 +4,8 @@ require "ostruct"
|
||||
class Account::MarketDataImporterTest < ActiveSupport::TestCase
|
||||
include ProviderTestHelper
|
||||
|
||||
PROVIDER_BUFFER = 5.days
|
||||
SECURITY_PRICE_BUFFER = Security::Price::Importer::PROVISIONAL_LOOKBACK_DAYS.days
|
||||
EXCHANGE_RATE_BUFFER = 5.days
|
||||
|
||||
setup do
|
||||
# Ensure a clean slate for deterministic assertions
|
||||
@@ -37,7 +38,7 @@ class Account::MarketDataImporterTest < ActiveSupport::TestCase
|
||||
ExchangeRate.create!(from_currency: "CAD", to_currency: "USD", date: existing_date, rate: 2.0)
|
||||
ExchangeRate.create!(from_currency: "USD", to_currency: "CAD", date: existing_date, rate: 0.5)
|
||||
|
||||
expected_start_date = (existing_date + 1.day) - PROVIDER_BUFFER
|
||||
expected_start_date = (existing_date + 1.day) - EXCHANGE_RATE_BUFFER
|
||||
end_date = Date.current.in_time_zone("America/New_York").to_date
|
||||
|
||||
@provider.expects(:fetch_exchange_rates)
|
||||
@@ -88,7 +89,7 @@ class Account::MarketDataImporterTest < ActiveSupport::TestCase
|
||||
entryable: trade
|
||||
)
|
||||
|
||||
expected_start_date = trade_date - PROVIDER_BUFFER
|
||||
expected_start_date = trade_date - SECURITY_PRICE_BUFFER
|
||||
end_date = Date.current.in_time_zone("America/New_York").to_date
|
||||
|
||||
@provider.expects(:fetch_security_prices)
|
||||
@@ -138,7 +139,7 @@ class Account::MarketDataImporterTest < ActiveSupport::TestCase
|
||||
entryable: trade
|
||||
)
|
||||
|
||||
expected_start_date = trade_date - PROVIDER_BUFFER
|
||||
expected_start_date = trade_date - SECURITY_PRICE_BUFFER
|
||||
end_date = Date.current.in_time_zone("America/New_York").to_date
|
||||
|
||||
# Simulate provider returning an error response
|
||||
@@ -181,7 +182,7 @@ class Account::MarketDataImporterTest < ActiveSupport::TestCase
|
||||
ExchangeRate.create!(from_currency: "CAD", to_currency: "USD", date: existing_date, rate: 2.0)
|
||||
ExchangeRate.create!(from_currency: "USD", to_currency: "CAD", date: existing_date, rate: 0.5)
|
||||
|
||||
expected_start_date = (existing_date + 1.day) - PROVIDER_BUFFER
|
||||
expected_start_date = (existing_date + 1.day) - EXCHANGE_RATE_BUFFER
|
||||
end_date = Date.current.in_time_zone("America/New_York").to_date
|
||||
|
||||
# Simulate provider returning an error response
|
||||
|
||||
Reference in New Issue
Block a user