mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 03:54:08 +00:00
Feat: Add default user account and consolidate account actions in menu (#1130)
* feat: Add default account for manual transaction entries (#1061) Allow users to designate a default account that auto-selects in the transaction creation form. Also consolidates account list actions (edit, link/unlink, enable/disable) into a meatball menu. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * - handle context menu width on mobile - restrict default account to depository types only - added FR, ES and DE i18n files * - Add credit card accounts can also be used as default - Moved logic into controller * Scope context menu max-width to accounts menu only - decouples the width constraint from the shared DS::Menu component by introducing an optional max_width param * fix ci test and address issues raised by coderabbit and codex * Address CodeRabbit review feedback - Use .present? for institution_name guards to avoid empty UI artifacts - Align "Set default" menu visibility with actual preselection eligibility (active + unlinked + supports_default?) to prevent drift between UI and model - Keep disabled star visible when account is already default but now ineligible Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add eligible_for_transaction_default? predicate to Account model Consolidates active + unlinked + supports_default? checks into a single shared predicate used by the controller, view, and user model guard, preventing a direct PATCH from bypassing UI eligibility rules. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Added "Unset default" option Added negative test for default account Removed duplicated logic for account.eligible_for_transaction_default --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -362,6 +362,33 @@ class UserTest < ActiveSupport::TestCase
|
||||
"Should return false when section key is missing from collapsed_sections"
|
||||
end
|
||||
|
||||
# Default account for transactions
|
||||
test "default_account_for_transactions returns account when active and manual" do
|
||||
account = accounts(:depository)
|
||||
@user.update!(default_account: account)
|
||||
assert_equal account, @user.default_account_for_transactions
|
||||
end
|
||||
|
||||
test "default_account_for_transactions returns nil when account is disabled" do
|
||||
account = accounts(:depository)
|
||||
@user.update!(default_account: account)
|
||||
account.disable!
|
||||
assert_nil @user.default_account_for_transactions
|
||||
end
|
||||
|
||||
test "default_account_for_transactions returns nil when account is linked" do
|
||||
account = accounts(:depository)
|
||||
@user.update!(default_account: account)
|
||||
plaid_account = plaid_accounts(:one)
|
||||
AccountProvider.create!(account: account, provider: plaid_account)
|
||||
account.reload
|
||||
assert_nil @user.default_account_for_transactions
|
||||
end
|
||||
|
||||
test "default_account_for_transactions returns nil when no default set" do
|
||||
assert_nil @user.default_account_for_transactions
|
||||
end
|
||||
|
||||
# SSO-only user security tests
|
||||
test "sso_only? returns true for user with OIDC identity and no password" do
|
||||
sso_user = users(:sso_only)
|
||||
|
||||
Reference in New Issue
Block a user