mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-04 04:55:20 +02:00
Improve account sync performance, handle concurrent market data syncing (#2236)
* PlaidConnectable concern * Remove bad abstraction * Put sync implementations in own concerns * Sync strategies * Move sync orchestration to Sync class * Clean up sync class, add state machine * Basic market data sync cron * Fix price sync * Improve sync window column names, add timestamps * 30 day syncs by default * Clean up market data methods * Report high duplicate sync counts to Sentry * Add sync states throughout app * account tab session * Persistent account tab selections * Remove manual sleep * Add migration to clear stale syncs on self hosted apps * Tweak sync states * Sync completion event broadcasts * Fix timezones in tests * Cleanup * More cleanup * Plaid item UI broadcasts for sync * Fix account ID namespace conflict * Sync broadcasters * Smoother account sync refreshes * Remove test sync delay
This commit is contained in:
parent
9793cc74f9
commit
10dd9e061a
97 changed files with 1837 additions and 949 deletions
|
@ -49,25 +49,6 @@ class Security::PriceTest < ActiveSupport::TestCase
|
|||
assert_not @security.find_or_fetch_price(date: Date.current)
|
||||
end
|
||||
|
||||
test "upserts historical prices from provider" do
|
||||
Security::Price.delete_all
|
||||
|
||||
# Will be overwritten by upsert
|
||||
Security::Price.create!(security: @security, date: 1.day.ago.to_date, price: 190, currency: "USD")
|
||||
|
||||
expect_provider_prices(security: @security, start_date: 2.days.ago.to_date, end_date: Date.current, prices: [
|
||||
Security::Price.new(security: @security, date: Date.current, price: 215, currency: "USD"),
|
||||
Security::Price.new(security: @security, date: 1.day.ago.to_date, price: 214, currency: "USD"),
|
||||
Security::Price.new(security: @security, date: 2.days.ago.to_date, price: 213, currency: "USD")
|
||||
])
|
||||
|
||||
@security.sync_provider_prices(start_date: 2.days.ago.to_date)
|
||||
|
||||
assert_equal 215, @security.prices.find_by(date: Date.current).price
|
||||
assert_equal 214, @security.prices.find_by(date: 1.day.ago.to_date).price
|
||||
assert_equal 213, @security.prices.find_by(date: 2.days.ago.to_date).price
|
||||
end
|
||||
|
||||
private
|
||||
def expect_provider_price(security:, price:, date:)
|
||||
@provider.expects(:fetch_security_price)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue