mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 15:49:39 +02:00
Test fixes
This commit is contained in:
parent
018310d4d1
commit
2e09d1a8c0
10 changed files with 126 additions and 25 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -14,17 +14,17 @@
|
|||
<%= form.text_field :name, placeholder: t(".name_placeholder"), required: "required", label: t(".name_label") %>
|
||||
|
||||
<% unless account.linked? %>
|
||||
<%= form.money_field :balance,
|
||||
label: t(".balance"),
|
||||
required: true,
|
||||
<%= form.money_field :balance,
|
||||
label: t(".balance"),
|
||||
required: true,
|
||||
default_currency: Current.family.currency,
|
||||
label_tooltip: "The current balance or value of the account, which is typically the balance reported by your financial institution." %>
|
||||
|
||||
<% unless account.persisted? %>
|
||||
<%= form.date_field :tracking_start_date,
|
||||
label: "Tracking start date",
|
||||
required: true,
|
||||
value: 2.years.ago.to_date,
|
||||
<%= form.date_field :tracking_start_date,
|
||||
label: "Tracking start date",
|
||||
required: true,
|
||||
value: 2.years.ago.to_date,
|
||||
label_tooltip: "The date we will start tracking the balance for this account. If you're not sure, we recommend using the default of 2 years ago so net worth graphs have adequate historical data." %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
@ -8,26 +8,26 @@ class Api::V1::TransactionsControllerTest < ActionDispatch::IntegrationTest
|
|||
@family = @user.family
|
||||
@account = @family.accounts.first
|
||||
@transaction = @family.transactions.first
|
||||
|
||||
|
||||
# Destroy existing active API keys to avoid validation errors
|
||||
@user.api_keys.active.destroy_all
|
||||
|
||||
|
||||
# Create fresh API keys instead of using fixtures to avoid parallel test conflicts
|
||||
@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"],
|
||||
name: "Test Read-Only Key",
|
||||
scopes: [ "read" ],
|
||||
display_key: "test_ro_#{SecureRandom.hex(8)}",
|
||||
source: "mobile" # Use different source to allow multiple keys
|
||||
)
|
||||
|
||||
|
||||
# Clear any existing rate limit data
|
||||
Redis.new.del("api_rate_limit:#{@api_key.id}")
|
||||
Redis.new.del("api_rate_limit:#{@read_only_api_key.id}")
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
5
test/fixtures/imports.yml
vendored
5
test/fixtures/imports.yml
vendored
|
@ -7,3 +7,8 @@ trade:
|
|||
family: dylan_family
|
||||
type: TradeImport
|
||||
status: pending
|
||||
|
||||
account:
|
||||
family: dylan_family
|
||||
type: AccountImport
|
||||
status: pending
|
||||
|
|
93
test/models/account_import_test.rb
Normal file
93
test/models/account_import_test.rb
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue