fix: Allow locale preview on onboarding preferences page (#682)

* fix: Allow locale preview on onboarding preferences page

When a user selects a different language on /onboarding/preferences,
the page now immediately displays in the selected language. This is
achieved by checking for a valid locale URL parameter before falling
back to the family's saved locale setting.

* fix: Harden locale param handling and restore locale in tests

- Add type check to ensure params[:locale] is a String before calling
  .to_sym, preventing 500 errors from array/hash injection attacks
- Add teardown to tests to restore original locale, preventing test
  pollution

* fix: Reload family in teardown to handle update_column

* fix: Remove edge case test that used update_column with nil locale

* fix: Simplify localize tests - rely on fixture defaults and transactional isolation

* fix: Update system test to expect Spanish button text after locale preview

* refactor: Use I18n.t for button text in system test instead of hardcoded string

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Juan José Mata
2026-01-17 17:59:10 +01:00
committed by GitHub
parent 527155a46f
commit 47e0185409
3 changed files with 34 additions and 2 deletions

View File

@@ -115,7 +115,8 @@ class OnboardingsTest < ApplicationSystemTestCase
select "DD/MM/YYYY", from: "user_family_attributes_date_format"
select "Dark", from: "user_theme"
click_button "Complete"
# Button text is in Spanish due to locale preview
click_button I18n.t("onboardings.preferences.submit", locale: :es)
# Wait for redirect to goals page to ensure form was submitted
assert_current_path goals_onboarding_path