Cover i18nhelper.valid_locale and user mailer with tests related to localized emails

This commit is contained in:
luisramos0
2018-12-06 15:13:32 +00:00
parent b9b91231ae
commit e274442d77
4 changed files with 76 additions and 22 deletions

View File

@@ -845,7 +845,6 @@ Layout/SpaceInsideHashLiteralBraces:
- 'spec/features/admin/reports_spec.rb'
- 'spec/features/consumer/shopping/checkout_spec.rb'
- 'spec/helpers/checkout_helper_spec.rb'
- 'spec/helpers/i18n_helper_spec.rb'
- 'spec/helpers/order_cycles_helper_spec.rb'
- 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb'
- 'spec/lib/open_food_network/feature_toggle_spec.rb'

View File

@@ -14,11 +14,11 @@ module I18nHelper
I18n.locale = spree_current_user.andand.locale || cookies[:locale] || I18n.default_locale
end
def valid_locale(object_with_locale)
if object_with_locale.present? &&
object_with_locale.locale.present? &&
available_locale?(object_with_locale.locale)
object_with_locale.locale
def valid_locale(user)
if user.present? &&
user.locale.present? &&
available_locale?(user.locale)
user.locale
else
I18n.default_locale
end

View File

@@ -24,13 +24,13 @@ describe I18nHelper, type: :helper do
end
it "sets the chosen locale" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
expect(I18n.locale).to eq :es
end
it "remembers the chosen locale" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
allow(helper).to receive(:params) { {} }
@@ -39,16 +39,16 @@ describe I18nHelper, type: :helper do
end
it "ignores unavailable locales" do
allow(helper).to receive(:params) { {locale: "xx"} }
allow(helper).to receive(:params) { { locale: "xx" } }
helper.set_locale
expect(I18n.locale).to eq :en
end
it "remembers the last chosen locale" do
allow(helper).to receive(:params) { {locale: "en"} }
allow(helper).to receive(:params) { { locale: "en" } }
helper.set_locale
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
allow(helper).to receive(:params) { {} }
@@ -57,7 +57,7 @@ describe I18nHelper, type: :helper do
end
it "remembers the chosen locale after logging in" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
# log in
@@ -68,7 +68,7 @@ describe I18nHelper, type: :helper do
end
it "forgets the chosen locale without cookies" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
# clean up cookies
@@ -91,14 +91,14 @@ describe I18nHelper, type: :helper do
end
it "sets the chosen locale" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
expect(I18n.locale).to eq :es
expect(user.locale).to eq "es"
end
it "remembers the chosen locale" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
allow(helper).to receive(:params) { {} }
@@ -107,10 +107,10 @@ describe I18nHelper, type: :helper do
end
it "remembers the last chosen locale" do
allow(helper).to receive(:params) { {locale: "en"} }
allow(helper).to receive(:params) { { locale: "en" } }
helper.set_locale
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
allow(helper).to receive(:params) { {} }
@@ -119,7 +119,7 @@ describe I18nHelper, type: :helper do
end
it "remembers the chosen locale after logging out" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
# log out
@@ -130,7 +130,7 @@ describe I18nHelper, type: :helper do
end
it "remembers the chosen locale on another computer" do
allow(helper).to receive(:params) { {locale: "es"} }
allow(helper).to receive(:params) { { locale: "es" } }
helper.set_locale
expect(cookies[:locale]).to eq "es"
@@ -142,4 +142,36 @@ describe I18nHelper, type: :helper do
expect(I18n.locale).to eq :es
end
end
context "#valid_locale" do
around do |example|
original_default_locale = I18n.default_locale
original_available_locales = Rails.application.config.i18n.available_locales
I18n.default_locale = "es"
Rails.application.config.i18n.available_locales = ["es", "pt"]
example.run
I18n.default_locale = original_default_locale
Rails.application.config.i18n.available_locales = original_available_locales
end
let(:user) { build(:user) }
it "returns default locale if given user is nil" do
expect(helper.valid_locale(nil)).to eq I18n.default_locale
end
it "returns default locale if locale of given user is nil" do
expect(helper.valid_locale(user)).to eq I18n.default_locale
end
it "returns default locale if locale of given user is not available" do
user.locale = "cn"
expect(helper.valid_locale(user)).to eq I18n.default_locale
end
it "returns the locale of the given user if available" do
user.locale = "pt"
expect(helper.valid_locale(user)).to eq "pt"
end
end
end

View File

@@ -17,9 +17,32 @@ describe Spree::UserMailer do
setup_email
end
it "sends an email when given a user" do
Spree::UserMailer.signup_confirmation(user).deliver
ActionMailer::Base.deliveries.count.should == 1
describe '#signup_confirmation' do
it "sends email when given a user" do
Spree::UserMailer.signup_confirmation(user).deliver
expect(ActionMailer::Base.deliveries.count).to eq(1)
end
describe "user locale" do
around do |example|
original_default_locale = I18n.default_locale
I18n.default_locale = 'pt'
example.run
I18n.default_locale = original_default_locale
end
it "sends email in user locale when user locale is defined" do
user.locale = 'es'
Spree::UserMailer.signup_confirmation(user).deliver
expect(ActionMailer::Base.deliveries.first.body).to include "Gracias por unirte"
end
it "sends email in default locale when user locale is not available" do
user.locale = 'cn'
Spree::UserMailer.signup_confirmation(user).deliver
expect(ActionMailer::Base.deliveries.first.body).to include "Obrigada por juntar-se"
end
end
end
# adapted from https://github.com/spree/spree_auth_devise/blob/70737af/spec/mailers/user_mailer_spec.rb