mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 20:14:08 +00:00
feat: Support optional balance date column in account CSV imports (#736)
* Initial plan * Add ability to specify balance date in AccountImport CSV Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com> * Restore original Ruby version * Fix linting issues - remove trailing whitespace Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com> * Add error handling for date parsing in AccountImport Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com> * Revert unintended Gemfile.lock changes Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
This commit is contained in:
@@ -63,8 +63,95 @@ class AccountImportTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
test "column_keys returns expected keys" do
|
||||
assert_equal %i[entity_type name amount currency], @import.column_keys
|
||||
test "import creates accounts with explicit balance dates" do
|
||||
import_csv = <<~CSV
|
||||
type,name,amount,currency,date
|
||||
depository,Main Checking,1000.00,USD,01/15/2024
|
||||
depository,Savings Account,5000.00,USD,02/01/2024
|
||||
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",
|
||||
date_col_label: "date",
|
||||
date_format: "%m/%d/%Y"
|
||||
)
|
||||
|
||||
@import.generate_rows_from_csv
|
||||
|
||||
# Create mappings for account types
|
||||
@import.mappings.create! key: "depository", value: "Depository", type: "Import::AccountTypeMapping"
|
||||
|
||||
@import.reload
|
||||
|
||||
# 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
|
||||
|
||||
# Verify accounts were created with correct dates
|
||||
accounts = @import.accounts.order(:name)
|
||||
|
||||
checking_account = accounts.find { |a| a.name == "Main Checking" }
|
||||
savings_account = accounts.find { |a| a.name == "Savings Account" }
|
||||
|
||||
checking_valuation = checking_account.valuations.opening_anchor.first
|
||||
savings_valuation = savings_account.valuations.opening_anchor.first
|
||||
|
||||
assert_equal Date.parse("2024-01-15"), checking_valuation.entry.date
|
||||
assert_equal Date.parse("2024-02-01"), savings_valuation.entry.date
|
||||
end
|
||||
|
||||
test "import creates accounts with default dates when date column not provided" do
|
||||
import_csv = <<~CSV
|
||||
type,name,amount,currency
|
||||
depository,Main Checking,1000.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
|
||||
|
||||
# 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
|
||||
|
||||
# Verify account was created with default date (2 years ago or 1 day before oldest entry)
|
||||
account = @import.accounts.first
|
||||
valuation = account.valuations.opening_anchor.first
|
||||
|
||||
# Default date should be 2 years ago when there are no other entries
|
||||
expected_default_date = 2.years.ago.to_date
|
||||
assert_equal expected_default_date, valuation.entry.date
|
||||
end
|
||||
|
||||
test "column_keys returns expected keys including date" do
|
||||
assert_equal %i[entity_type name amount currency date], @import.column_keys
|
||||
end
|
||||
|
||||
test "required_column_keys returns expected keys" do
|
||||
|
||||
Reference in New Issue
Block a user