Files
sure/test/controllers/concerns/localize_test.rb
Juan José Mata c7ab25b866 Use browser Accept-Language for login and onboarding locale (#768)
* Use Accept-Language for unauthenticated locale

* Add per-user locale overrides

* Fix test

* Use more than the top `accept-language` entry

* Localization of string
2026-01-24 22:00:41 +01:00

58 lines
1.9 KiB
Ruby

require "test_helper"
class LocalizeTest < ActionDispatch::IntegrationTest
test "uses Accept-Language top locale on login when supported" do
get new_session_url, headers: { "Accept-Language" => "fr-CA,fr;q=0.9" }
assert_response :success
assert_select "button", text: /Se connecter/i
end
test "falls back to English when Accept-Language is unsupported" do
get new_session_url, headers: { "Accept-Language" => "ru-RU,ru;q=0.9" }
assert_response :success
assert_select "button", text: /Log in/i
end
test "uses Accept-Language for onboarding when user locale is not set" do
sign_in users(:family_admin)
get preferences_onboarding_url, headers: { "Accept-Language" => "es-ES,es;q=0.9" }
assert_response :success
assert_select "h1", text: /Configura tus preferencias/i
end
test "falls back to family locale when Accept-Language is unsupported" do
sign_in users(:family_admin)
get preferences_onboarding_url, headers: { "Accept-Language" => "ru-RU,ru;q=0.9" }
assert_response :success
assert_select "h1", text: /Configure your preferences/i
end
test "respects user locale override even when Accept-Language differs" do
user = users(:family_admin)
user.update!(locale: "fr")
sign_in user
get preferences_onboarding_url, headers: { "Accept-Language" => "es-ES,es;q=0.9" }
assert_response :success
assert_select "h1", text: /Configurez vos préférences/i
end
test "switches locale when locale param is provided" do
sign_in users(:family_admin)
get preferences_onboarding_url(locale: "fr")
assert_response :success
assert_select "h1", text: /Configurez vos préférences/i
end
test "ignores invalid locale param and uses family locale" do
sign_in users(:family_admin)
get preferences_onboarding_url(locale: "invalid_locale")
assert_response :success
assert_select "h1", text: /Configure your preferences/i
end
end