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

Only update account balance if changed (#1676)
Some checks are pending
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions

* Only update balance if changed

* Update test assertions
This commit is contained in:
Zach Gollwitzer 2025-01-23 21:14:01 -05:00 committed by GitHub
parent 61321f6b16
commit 43dd16e3fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 6 additions and 4 deletions

View file

@ -135,9 +135,11 @@ class Account < ApplicationRecord
end end
def update_with_sync!(attributes) def update_with_sync!(attributes)
should_update_balance = attributes[:balance] && attributes[:balance].to_d != balance
transaction do transaction do
update!(attributes) update!(attributes)
update_balance!(attributes[:balance]) if attributes[:balance] update_balance!(attributes[:balance]) if should_update_balance
end end
sync_later sync_later

View file

@ -61,11 +61,11 @@ module AccountableResourceInterfaceTest
assert_equal "#{@account.accountable_name.humanize} account created", flash[:notice] assert_equal "#{@account.accountable_name.humanize} account created", flash[:notice]
end end
test "updates account balance by creating new valuation" do test "updates account balance by creating new valuation if balance has changed" do
assert_difference [ "Account::Entry.count", "Account::Valuation.count" ], 1 do assert_difference [ "Account::Entry.count", "Account::Valuation.count" ], 1 do
patch account_url(@account), params: { patch account_url(@account), params: {
account: { account: {
balance: 10000 balance: 12000
} }
} }
end end
@ -81,7 +81,7 @@ module AccountableResourceInterfaceTest
assert_no_difference [ "Account::Entry.count", "Account::Valuation.count" ] do assert_no_difference [ "Account::Entry.count", "Account::Valuation.count" ] do
patch account_url(@account), params: { patch account_url(@account), params: {
account: { account: {
balance: 10000 balance: 12000
} }
} }
end end