Refactor UserLocaleSetter public methods

This commit is contained in:
Matt-Yorkley
2020-07-04 09:53:36 +02:00
parent f08a530877
commit 96138e9129
3 changed files with 14 additions and 18 deletions

View File

@@ -4,6 +4,6 @@ module I18nHelper
end
def valid_locale(user)
UserLocaleSetter.new(user).valid_locale_for_user
UserLocaleSetter.new(user).valid_current_locale
end
end

View File

@@ -19,8 +19,14 @@ class UserLocaleSetter
current_user.update!(locale: valid_current_locale)
end
def valid_locale_for_user
valid_current_locale
def valid_current_locale
if current_user_locale && available_locale?(current_user_locale)
current_user_locale
elsif cookies[:locale] && available_locale?(cookies[:locale])
cookies[:locale]
else
I18n.default_locale
end
end
private
@@ -39,16 +45,6 @@ class UserLocaleSetter
end
def current_user_locale
current_user.andand.locale
end
def valid_current_locale
if current_user_locale && available_locale?(current_user_locale)
current_user_locale
elsif cookies[:locale] && available_locale?(cookies[:locale])
cookies[:locale]
else
I18n.default_locale
end
current_user&.locale
end
end

View File

@@ -120,19 +120,19 @@ describe UserLocaleSetter do
end
end
describe "#valid_locale_for_user" do
describe "#valid_current_locale" do
let(:service) { UserLocaleSetter.new(user) }
context "when the user has a locale set" do
it "returns the user's locale" do
user.update(locale: "es")
expect(service.valid_locale_for_user).to eq "es"
expect(service.valid_current_locale).to eq "es"
end
end
context "when the user has no locale set" do
it "returns the default locale" do
expect(service.valid_locale_for_user).to eq default_locale
expect(service.valid_current_locale).to eq default_locale
end
end
@@ -140,7 +140,7 @@ describe UserLocaleSetter do
let(:user) { nil }
it "returns the default locale" do
expect(service.valid_locale_for_user).to eq default_locale
expect(service.valid_current_locale).to eq default_locale
end
end
end