From 0c2fd4bfd20d5df69116e0a37eff956ff7fbac8d Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Fri, 3 Jul 2020 16:32:46 +0200 Subject: [PATCH] Fix ensure_valid_locale_persisted and change public interface of service --- app/controllers/spree/user_sessions_controller.rb | 5 +++-- app/helpers/i18n_helper.rb | 2 +- app/services/user_locale_setter.rb | 8 ++++---- spec/features/consumer/authentication_spec.rb | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/controllers/spree/user_sessions_controller.rb b/app/controllers/spree/user_sessions_controller.rb index 323fff9172..df42f622e1 100644 --- a/app/controllers/spree/user_sessions_controller.rb +++ b/app/controllers/spree/user_sessions_controller.rb @@ -52,9 +52,10 @@ module Spree def ensure_valid_locale_persisted # When creating a new user session we have to wait until after a successful - # login to be able to persist a locale on the current user + # login to be able to persist a selected locale on the current user - UserLocaleSetter.ensure_valid_locale_persisted(spree_current_user) + UserLocaleSetter.new(spree_current_user, params[:locale], cookies). + ensure_valid_locale_persisted end end end diff --git a/app/helpers/i18n_helper.rb b/app/helpers/i18n_helper.rb index ce128b39f6..f1142472f1 100644 --- a/app/helpers/i18n_helper.rb +++ b/app/helpers/i18n_helper.rb @@ -1,6 +1,6 @@ module I18nHelper def set_locale - UserLocaleSetter.new(spree_current_user, params[:locale], cookies).call + UserLocaleSetter.new(spree_current_user, params[:locale], cookies).set_locale end def valid_locale(user) diff --git a/app/services/user_locale_setter.rb b/app/services/user_locale_setter.rb index 1a5951df20..22ca113a70 100644 --- a/app/services/user_locale_setter.rb +++ b/app/services/user_locale_setter.rb @@ -7,17 +7,17 @@ class UserLocaleSetter @cookies = cookies end - def call + def set_locale save_locale_from_params save_locale_from_cookies I18n.locale = valid_current_locale end - def self.ensure_valid_locale_persisted(user) - return unless user && !available_locale?(user.locale) + def ensure_valid_locale_persisted + return unless current_user && !available_locale?(current_user.locale) - user.update!(locale: I18n.default_locale) + current_user.update!(locale: valid_current_locale) end def self.valid_locale_for_user(user) diff --git a/spec/features/consumer/authentication_spec.rb b/spec/features/consumer/authentication_spec.rb index 75f3d519d0..c172f40f38 100644 --- a/spec/features/consumer/authentication_spec.rb +++ b/spec/features/consumer/authentication_spec.rb @@ -175,7 +175,7 @@ feature "Authentication", js: true do user.update!(locale: nil) end - xit "logs in successfully and uses the locale from cookies" do + it "logs in successfully and uses the locale from cookies" do page.driver.browser.manage.add_cookie(name: 'locale', value: 'es') fill_in_and_submit_login_form(user)