Files
sure/test/system/accounts_test.rb
Brendon Scheiber 7411db5689 feat(i18n): add Hungarian translations for strings extracted in #1806 (#1817)
* add missing Hungarian translations for newly extracted strings

Replace hard-coded UI strings with I18n lookups across controllers, models and views (breadcrumbs, dashboard, reports, settings, transactions, balance sheet, MFA status). Update models to use translations for category defaults, account/display names, classification group and period labels; remove a few hardcoded display_name methods. Add and update numerous locale files (English and extensive Hungarian translations, plus model/view/doorkeeper entries) to provide the required keys. These changes centralize copy for localization and prepare the app for Hungarian/English UI text.

* Pluralize account type labels; tidy Crypto model

Update English locale account type labels to use plural forms for consistency (Investment(s), Properties, Vehicles, Other Assets, Credit Cards, Loans, Other Liabilities). Also remove an extra blank line in app/models/crypto.rb to tidy up formatting.

* Back to singular

* fix(i18n): separate singular and group account labels

* Update _accountable_group.html.erb

* Use I18n plural names for account types

Change Accountable#display_name to look up pluralized account type names via I18n (accounts.types_plural.<underscored_class>) with a fallback to the legacy display logic. Add legacy_display_name helper to preserve previous behavior (singular for Depository and Crypto, pluralized otherwise). Add corresponding types_plural entries in English and Hungarian locale files for various account types.

---------

Co-authored-by: Juan José Mata <jjmata@jjmata.com>
Co-authored-by: sure-admin <sure-admin@splashblot.com>
2026-05-18 20:49:28 +02:00

170 lines
5.3 KiB
Ruby

require "application_system_test_case"
class AccountsTest < ApplicationSystemTestCase
setup do
sign_in @user = users(:family_admin)
Family.any_instance.stubs(:get_link_token).returns("test-link-token")
visit root_url
open_new_account_modal
end
test "can create depository account" do
assert_account_created("Depository")
end
test "can create investment account" do
assert_account_created("Investment")
end
test "can create crypto account" do
assert_account_created("Crypto")
end
test "can create property account" do
# Step 1: Select property type and enter basic details
click_link "Property"
account_name = "[system test] Property Account"
fill_in "Name*", with: account_name
select "Single Family Home", from: "Property type*"
fill_in "Year Built (optional)", with: 2005
fill_in "Area (optional)", with: 2250
click_button "Next"
# Step 2: Enter balance information
assert_text "Value"
fill_in "account[balance]", with: 500000
click_button "Next"
# Step 3: Enter address information
assert_text "Address"
fill_in "Address Line 1", with: "123 Main St"
fill_in "City", with: "San Francisco"
fill_in "State/Region", with: "CA"
fill_in "Postal Code", with: "94101"
fill_in "Country", with: "US"
click_button "Save"
# Verify account was created and is now active
assert_text account_name
created_account = Account.order(:created_at).last
assert_equal "active", created_account.status
assert_equal 500000, created_account.balance
assert_equal "123 Main St", created_account.property.address.line1
assert_equal "San Francisco", created_account.property.address.locality
end
test "can create vehicle account" do
assert_account_created "Vehicle" do
fill_in "Make", with: "Toyota"
fill_in "Model", with: "Camry"
fill_in "Year", with: "2020"
fill_in "Mileage", with: "30000"
end
end
test "can create other asset account" do
assert_account_created("OtherAsset")
end
test "can create credit card account" do
assert_account_created "CreditCard" do
fill_in "Available credit", with: 1000
fill_in "account[accountable_attributes][minimum_payment]", with: 25.51
fill_in "APR", with: 15.25
fill_in "Expiration date", with: 1.year.from_now.to_date
fill_in "Annual fee", with: 100
end
end
test "can create loan account" do
assert_account_created "Loan" do
fill_in "account[accountable_attributes][initial_balance]", with: 1000
fill_in "Interest rate", with: 5.25
select "Fixed", from: "Rate type"
fill_in "Term (months)", with: 360
end
end
test "can create other liability account" do
assert_account_created("OtherLiability")
end
private
def open_new_account_modal
within "[data-controller='DS--tabs']" do
click_button "All"
click_link "New account"
end
end
def assert_account_created(accountable_type, &block)
click_link Accountable.from_type(accountable_type).singular_display_name
click_link "Enter account balance" if accountable_type.in?(%w[Depository Investment Crypto Loan CreditCard])
account_name = "[system test] #{accountable_type} Account"
institution_name = "[system test] Institution"
institution_domain = "example.com"
notes = "Test notes for #{accountable_type}"
fill_in "Account name*", with: account_name
fill_in "account[balance]", with: 100.99
find("summary", text: "Additional details").click
fill_in "Institution name", with: institution_name
fill_in "Institution domain", with: institution_domain
fill_in "Notes", with: notes
yield if block_given?
click_button "Create Account"
within_testid("account-sidebar-tabs") do
click_on "All"
find("details", text: Accountable.from_type(accountable_type).display_name).click
assert_text account_name
end
visit accounts_url
assert_text account_name
created_account = Account.order(:created_at).last
assert_equal institution_name, created_account[:institution_name]
assert_equal institution_domain, created_account[:institution_domain]
assert_equal notes, created_account[:notes]
visit account_url(created_account)
within_testid("account-menu") do
find("button").click
click_on "Edit"
end
updated_institution_name = "[system test] Updated Institution"
updated_institution_domain = "updated.example.com"
updated_notes = "Updated notes for #{accountable_type}"
fill_in "Account name", with: "Updated account name"
find("summary", text: "Additional details").click
fill_in "Institution name", with: updated_institution_name
fill_in "Institution domain", with: updated_institution_domain
fill_in "Notes", with: updated_notes
click_button "Update Account"
assert_selector "h2", text: "Updated account name"
created_account.reload
assert_equal updated_institution_name, created_account[:institution_name]
assert_equal updated_institution_domain, created_account[:institution_domain]
assert_equal updated_notes, created_account[:notes]
end
def humanized_accountable(accountable_type)
Accountable.from_type(accountable_type).singular_display_name
end
end