1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-24 15:49:39 +02:00

Basic Plaid Integration (#1433)
Some checks are pending
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions

* Basic plaid data model and linking

* Remove institutions, add plaid items

* Improve schema and Plaid provider

* Add webhook verification sketch

* Webhook verification

* Item accounts and balances sync setup

* Provide test encryption keys

* Fix test

* Only provide encryption keys in prod

* Try defining keys in test env

* Consolidate account sync logic

* Add back plaid account initialization

* Plaid transaction sync

* Sync UI overhaul for Plaid

* Add liability and investment syncing

* Handle investment webhooks and process current day holdings

* Remove logs

* Remove "all" period select for performance

* fix amount calc

* Remove todo comment

* Coming soon for investment historical data

* Document Plaid configuration

* Listen for holding updates
This commit is contained in:
Zach Gollwitzer 2024-11-15 13:49:37 -05:00 committed by GitHub
parent 3bc9da4105
commit cbba2ba675
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
127 changed files with 1537 additions and 841 deletions

View file

@ -3,9 +3,28 @@ require "csv"
class FamilyTest < ActiveSupport::TestCase
include Account::EntriesTestHelper
include SyncableInterfaceTest
def setup
@family = families :empty
@family = families(:empty)
@syncable = families(:dylan_family)
end
test "syncs plaid items and manual accounts" do
family_sync = syncs(:family)
manual_accounts_count = @syncable.accounts.manual.count
items_count = @syncable.plaid_items.count
Account.any_instance.expects(:sync_data)
.with(start_date: nil)
.times(manual_accounts_count)
PlaidItem.any_instance.expects(:sync_data)
.with(start_date: nil)
.times(items_count)
@syncable.sync_data(start_date: family_sync.start_date)
end
test "calculates assets" do
@ -48,30 +67,6 @@ class FamilyTest < ActiveSupport::TestCase
assert_equal Money.new(50000, @family.currency), @family.net_worth
end
test "needs sync if last family sync was before today" do
assert @family.needs_sync?
@family.update! last_synced_at: Time.now
assert_not @family.needs_sync?
end
test "syncs active accounts" do
account = create_account(balance: 1000, accountable: CreditCard.new, is_active: false)
Account.any_instance.expects(:sync_later).never
@family.sync
account.update! is_active: true
Account.any_instance.expects(:needs_sync?).once.returns(true)
Account.any_instance.expects(:last_sync_date).once.returns(2.days.ago.to_date)
Account.any_instance.expects(:sync_later).with(start_date: 2.days.ago.to_date).once
@family.sync
end
test "calculates snapshot" do
asset = create_account(balance: 500, accountable: Depository.new)
liability = create_account(balance: 100, accountable: CreditCard.new)