mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
* Add help articles * Broadcast sync messages as notifications * Lint fixes * more lint fixes * Remove redundant code
120 lines
3.3 KiB
Ruby
120 lines
3.3 KiB
Ruby
require "test_helper"
|
|
|
|
class AccountsControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
sign_in @user = users(:family_admin)
|
|
@account = accounts(:depository)
|
|
end
|
|
|
|
test "gets accounts list" do
|
|
get accounts_url
|
|
assert_response :success
|
|
|
|
@user.family.accounts.each do |account|
|
|
assert_dom "#" + dom_id(account), count: 1
|
|
end
|
|
end
|
|
|
|
test "new" do
|
|
get new_account_path
|
|
assert_response :ok
|
|
end
|
|
|
|
test "show" do
|
|
get account_path(@account)
|
|
assert_response :ok
|
|
end
|
|
|
|
test "can sync an account" do
|
|
post sync_account_path(@account)
|
|
assert_response :no_content
|
|
end
|
|
|
|
test "can sync all accounts" do
|
|
post sync_all_accounts_path
|
|
assert_redirected_to accounts_url
|
|
assert_equal "Successfully queued accounts for syncing.", flash[:notice]
|
|
end
|
|
|
|
test "should update account" do
|
|
patch account_url(@account), params: {
|
|
account: {
|
|
name: "Updated name",
|
|
is_active: "0",
|
|
institution_id: institutions(:chase).id
|
|
}
|
|
}
|
|
|
|
assert_redirected_to account_url(@account)
|
|
assert_enqueued_with job: AccountSyncJob
|
|
assert_equal "Account updated", 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_url(@account)
|
|
assert_enqueued_with job: AccountSyncJob
|
|
assert_equal "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", 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_url(@account)
|
|
assert_enqueued_with job: AccountSyncJob
|
|
assert_equal "Account updated", flash[:notice]
|
|
end
|
|
|
|
test "should create an account" do
|
|
assert_difference [ "Account.count", "Account::Valuation.count", "Account::Entry.count" ], 1 do
|
|
post accounts_path, params: {
|
|
account: {
|
|
name: "Test",
|
|
accountable_type: "Depository",
|
|
balance: 200,
|
|
currency: "USD",
|
|
subtype: "checking",
|
|
institution_id: institutions(:chase).id
|
|
}
|
|
}
|
|
|
|
assert_equal "New account created successfully", flash[:notice]
|
|
assert_redirected_to account_url(Account.order(:created_at).last)
|
|
end
|
|
end
|
|
|
|
test "can add optional start date and balance to an account on create" do
|
|
assert_difference -> { Account.count } => 1, -> { Account::Valuation.count } => 2 do
|
|
post accounts_path, params: {
|
|
account: {
|
|
name: "Test",
|
|
accountable_type: "Depository",
|
|
balance: 200,
|
|
currency: "USD",
|
|
subtype: "checking",
|
|
institution_id: institutions(:chase).id,
|
|
start_balance: 100,
|
|
start_date: 10.days.ago
|
|
}
|
|
}
|
|
|
|
assert_equal "New account created successfully", flash[:notice]
|
|
assert_redirected_to account_url(Account.order(:created_at).last)
|
|
end
|
|
end
|
|
end
|