mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
Cover i18nhelper.valid_locale and user mailer with tests related to localized emails
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user