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

Test fixes

This commit is contained in:
Zach Gollwitzer 2025-07-08 13:03:40 -04:00
parent 018310d4d1
commit 2e09d1a8c0
10 changed files with 126 additions and 25 deletions

View file

@ -40,7 +40,7 @@ module AccountableResource
@account.lock_saved_attributes!
respond_to do |format|
format.html { redirect_to account_params[:return_to].presence || @account, notice: accountable_type.name.underscore.humanize + " account created" }
format.html { redirect_to account_params[:return_to].presence || account_path(@account), notice: accountable_type.name.underscore.humanize + " account created" }
format.turbo_stream { stream_redirect_to account_params[:return_to].presence || account_path(@account), notice: accountable_type.name.underscore.humanize + " account created" }
end
end
@ -67,8 +67,8 @@ module AccountableResource
@account.lock_saved_attributes!
respond_to do |format|
format.html { redirect_back_or_to @account, notice: accountable_type.name.underscore.humanize + " account updated" }
format.turbo_stream { stream_redirect_to @account, notice: accountable_type.name.underscore.humanize + " account updated" }
format.html { redirect_back_or_to account_path(@account), notice: accountable_type.name.underscore.humanize + " account updated" }
format.turbo_stream { stream_redirect_to account_path(@account), notice: accountable_type.name.underscore.humanize + " account updated" }
end
end

View file

@ -20,7 +20,10 @@ class AccountImport < Import
currency: row.currency,
date: Date.current,
name: "Imported account value",
entryable: Valuation.new
entryable: Valuation.new(
balance: row.amount.to_d,
cash_balance: row.amount.to_d
)
)
end
end

View file

@ -16,14 +16,14 @@ class Api::V1::TransactionsControllerTest < ActionDispatch::IntegrationTest
@api_key = ApiKey.create!(
user: @user,
name: "Test Read-Write Key",
scopes: ["read_write"],
scopes: [ "read_write" ],
display_key: "test_rw_#{SecureRandom.hex(8)}"
)
@read_only_api_key = ApiKey.create!(
user: @user,
name: "Test Read-Only Key",
scopes: ["read"],
scopes: [ "read" ],
display_key: "test_ro_#{SecureRandom.hex(8)}",
source: "mobile" # Use different source to allow multiple keys
)

View file

@ -11,8 +11,8 @@ class CreditCardsControllerTest < ActionDispatch::IntegrationTest
test "creates with credit card details" do
assert_difference -> { Account.count } => 1,
-> { CreditCard.count } => 1,
-> { Valuation.count } => 2,
-> { Entry.count } => 2 do
-> { Valuation.count } => 1,
-> { Entry.count } => 1 do
post credit_cards_path, params: {
account: {
name: "New Credit Card",

View file

@ -11,8 +11,8 @@ class LoansControllerTest < ActionDispatch::IntegrationTest
test "creates with loan details" do
assert_difference -> { Account.count } => 1,
-> { Loan.count } => 1,
-> { Valuation.count } => 2,
-> { Entry.count } => 2 do
-> { Valuation.count } => 1,
-> { Entry.count } => 1 do
post loans_path, params: {
account: {
name: "New Loan",

View file

@ -23,7 +23,7 @@ class ValuationsControllerTest < ActionDispatch::IntegrationTest
end
created_entry = Entry.order(created_at: :desc).first
assert_equal "Manual account value update", created_entry.name
assert_equal "Manual value update", created_entry.name
assert_equal Date.current, created_entry.date
assert_equal account.balance + 100, created_entry.amount_money.to_f

View file

@ -11,8 +11,8 @@ class VehiclesControllerTest < ActionDispatch::IntegrationTest
test "creates with vehicle details" do
assert_difference -> { Account.count } => 1,
-> { Vehicle.count } => 1,
-> { Valuation.count } => 2,
-> { Entry.count } => 2 do
-> { Valuation.count } => 1,
-> { Entry.count } => 1 do
post vehicles_path, params: {
account: {
name: "Vehicle",

View file

@ -7,3 +7,8 @@ trade:
family: dylan_family
type: TradeImport
status: pending
account:
family: dylan_family
type: AccountImport
status: pending

View file

@ -0,0 +1,93 @@
require "test_helper"
class AccountImportTest < ActiveSupport::TestCase
include ActiveJob::TestHelper, ImportInterfaceTest
setup do
@subject = @import = imports(:account)
end
test "import creates accounts with valuations" do
import_csv = <<~CSV
type,name,amount,currency
depository,Main Checking,1000.00,USD
depository,Savings Account,5000.00,USD
CSV
@import.update!(
raw_file_str: import_csv,
entity_type_col_label: "type",
name_col_label: "name",
amount_col_label: "amount",
currency_col_label: "currency"
)
@import.generate_rows_from_csv
# Create mappings for account types
@import.mappings.create! key: "depository", value: "Depository", type: "Import::AccountTypeMapping"
@import.reload
# Store initial counts
initial_account_count = Account.count
initial_entry_count = Entry.count
initial_valuation_count = Valuation.count
# Perform the import
@import.publish
# Check if import succeeded
if @import.failed?
fail "Import failed with error: #{@import.error}"
end
assert_equal "complete", @import.status
# Check the differences
assert_equal initial_account_count + 2, Account.count, "Expected 2 new accounts"
assert_equal initial_entry_count + 2, Entry.count, "Expected 2 new entries"
assert_equal initial_valuation_count + 2, Valuation.count, "Expected 2 new valuations"
# Verify accounts were created correctly
accounts = @import.accounts.order(:name)
assert_equal [ "Main Checking", "Savings Account" ], accounts.pluck(:name)
assert_equal [ 1000.00, 5000.00 ], accounts.map { |a| a.balance.to_f }
# Verify valuations were created with correct fields
accounts.each do |account|
valuation = account.valuations.last
assert_not_nil valuation
assert_equal account.balance, valuation.balance
assert_equal account.balance, valuation.cash_balance
assert_equal "recon", valuation.kind
end
end
test "column_keys returns expected keys" do
assert_equal %i[entity_type name amount currency], @import.column_keys
end
test "required_column_keys returns expected keys" do
assert_equal %i[name amount], @import.required_column_keys
end
test "mapping_steps returns account type mapping" do
assert_equal [ Import::AccountTypeMapping ], @import.mapping_steps
end
test "dry_run returns expected counts" do
@import.rows.create!(
entity_type: "depository",
name: "Test Account",
amount: "1000.00",
currency: "USD"
)
assert_equal({ accounts: 1 }, @import.dry_run)
end
test "max_row_count is limited to 50" do
assert_equal 50, @import.max_row_count
end
end