1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 05:09:38 +02:00
Maybe/test/interfaces/accountable_resource_interface_test.rb
Zach Gollwitzer 7be6a372bf
Some checks are pending
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions
Preserve original transaction names when enriching (#1556)
* Preserve original transaction name

* Remove stale method

* Fix tests
2024-12-19 10:16:09 -05:00

93 lines
2.8 KiB
Ruby

require "test_helper"
module AccountableResourceInterfaceTest
extend ActiveSupport::Testing::Declarative
test "shows new form" do
Plaid::PlaidApi.any_instance.stubs(:link_token_create).returns(
Plaid::LinkTokenCreateResponse.new(link_token: "test-link-token")
)
get new_polymorphic_url(@account.accountable)
assert_response :success
end
test "shows edit form" do
get edit_account_url(@account)
assert_response :success
end
test "renders accountable page" do
get account_url(@account)
assert_response :success
end
test "destroys account" do
delete account_url(@account)
assert_redirected_to accounts_path
assert_enqueued_with job: DestroyJob
assert_equal "#{@account.accountable_name.underscore.humanize} account scheduled for deletion", flash[:notice]
end
test "updates basic account balances" do
assert_no_difference [ "Account.count", "@account.accountable_class.count" ] do
patch account_url(@account), params: {
account: {
name: "Updated name",
balance: 10000,
currency: "USD"
}
}
end
assert_redirected_to @account
assert_equal "#{@account.accountable_name.underscore.humanize} account updated", flash[:notice]
end
test "creates with basic attributes" do
assert_difference [ "Account.count", "@account.accountable_class.count" ], 1 do
post "/#{@account.accountable_name.pluralize}", params: {
account: {
accountable_type: @account.accountable_class,
name: "New accountable",
balance: 10000,
currency: "USD",
subtype: "checking"
}
}
end
assert_redirected_to Account.order(:created_at).last
assert_equal "#{@account.accountable_name.humanize} account created", flash[:notice]
end
test "updates account balance by creating new valuation" do
assert_difference [ "Account::Entry.count", "Account::Valuation.count" ], 1 do
patch account_url(@account), params: {
account: {
balance: 10000
}
}
end
assert_redirected_to @account
assert_enqueued_with job: SyncJob
assert_equal "#{@account.accountable_name.humanize} account updated", flash[:notice]
end
test "updates account balance by editing existing valuation for today" do
@account.entries.create! date: Date.current, amount: 6000, currency: "USD", name: "Balance update", entryable: Account::Valuation.new
assert_no_difference [ "Account::Entry.count", "Account::Valuation.count" ] do
patch account_url(@account), params: {
account: {
balance: 10000
}
}
end
assert_redirected_to @account
assert_enqueued_with job: SyncJob
assert_equal "#{@account.accountable_name.humanize} account updated", flash[:notice]
end
end