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

Add partial account sync support (#653)

* Add partial account sync support

* Fix indentation

* Use historical balance as base when doing partial sync

* Simplify controller crud tests

* Fix linter errors
This commit is contained in:
Jakub Kottnauer 2024-04-24 21:55:52 +02:00 committed by GitHub
parent b3f8ab78d9
commit ad4de99f1a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 260 additions and 111 deletions

View file

@ -3,7 +3,8 @@ require "test_helper"
class ValuationsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in @user = users(:family_admin)
@account = accounts(:checking)
@valuation = valuations(:savings_one)
@account = @valuation.account
end
test "new" do
@ -11,9 +12,55 @@ class ValuationsControllerTest < ActionDispatch::IntegrationTest
assert_response :success
end
test "create" do
test "should create valuation" do
assert_difference("Valuation.count") do
post account_valuations_url(@account), params: { valuation: { value: 1, date: Date.current, type: "Appraisal" } }
end
end
test "create should sync account with correct start date" do
date = Date.current - 1.day
assert_enqueued_with(job: AccountSyncJob, args: [ @account, date ]) do
post account_valuations_url(@account), params: { valuation: { value: 2, date:, type: "Appraisal" } }
end
end
test "should update valuation" do
date = @valuation.date
patch valuation_url(@valuation), params: { valuation: { account_id: @valuation.account_id, value: 1, date:, type: "Appraisal" } }
assert_redirected_to account_path(@valuation.account)
end
test "update should sync account with correct start date" do
new_date = @valuation.date - 1.day
assert_enqueued_with(job: AccountSyncJob, args: [ @account, new_date ]) do
patch valuation_url(@valuation), params: { valuation: { account_id: @valuation.account_id, value: @valuation.value, date: new_date, type: "Appraisal" } }
end
new_date = @valuation.reload.date + 1.day
assert_enqueued_with(job: AccountSyncJob, args: [ @account, @valuation.date ]) do
patch valuation_url(@valuation), params: { valuation: { account_id: @valuation.account_id, value: @valuation.value, date: new_date, type: "Appraisal" } }
end
end
test "should destroy valuation" do
assert_difference("Valuation.count", -1) do
delete valuation_url(@valuation)
end
assert_redirected_to account_path(@account)
end
test "destroy should sync account with correct start date" do
first, second = @account.valuations.order(:date).all
assert_enqueued_with(job: AccountSyncJob, args: [ @account, first.date ]) do
delete valuation_url(second)
end
assert_enqueued_with(job: AccountSyncJob, args: [ @account, nil ]) do
delete valuation_url(first)
end
end
end