mirror of
https://github.com/we-promise/sure.git
synced 2026-04-18 19:44:09 +00:00
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
This commit is contained in:
@@ -1,23 +1,55 @@
|
||||
require "test_helper"
|
||||
|
||||
class LocalizeTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
sign_in users(:family_admin)
|
||||
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 "uses family locale by default" do
|
||||
get preferences_onboarding_url
|
||||
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
|
||||
|
||||
@@ -21,14 +21,15 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
|
||||
name: "New Family Name",
|
||||
country: "US",
|
||||
date_format: "%m/%d/%Y",
|
||||
currency: "USD",
|
||||
locale: "en"
|
||||
}
|
||||
currency: "USD"
|
||||
},
|
||||
locale: "es"
|
||||
}
|
||||
}
|
||||
|
||||
assert_redirected_to settings_profile_url
|
||||
assert_equal "Your profile has been updated.", flash[:notice]
|
||||
assert_equal "es", @user.reload.locale
|
||||
end
|
||||
|
||||
test "admin can reset family data" do
|
||||
|
||||
Reference in New Issue
Block a user