Not doing so might cause the following test to use translations for only one locale. This scenario happens if the previous test executes I18n.reload!, which resets I18n.config.backend's "@translations" instance variable. So, the sequence could be as follows: 1. The previous tests sets `@translations = nil` 2. This test stubs `available_locales` to `[:en]` 3. `@translations` gets only translations for `en` 4. The following test doesn't find translations for Spanish and fails
86 lines
2.3 KiB
Ruby
86 lines
2.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
feature 'Localization' do
|
|
|
|
scenario 'Wrong locale' do
|
|
Globalize.with_locale(:es) do
|
|
create(:widget_card, title: 'Bienvenido a CONSUL',
|
|
description: 'Software libre para la participación ciudadana.',
|
|
link_text: 'Más información',
|
|
link_url: 'http://consulproject.org/',
|
|
header: true)
|
|
end
|
|
|
|
visit root_path(locale: :es)
|
|
visit root_path(locale: :klingon)
|
|
|
|
expect(page).to have_text('Bienvenido a CONSUL')
|
|
end
|
|
|
|
scenario 'Available locales appear in the locale switcher' do
|
|
visit '/'
|
|
|
|
within('.locale-form .js-location-changer') do
|
|
expect(page).to have_content 'Español'
|
|
expect(page).to have_content 'English'
|
|
end
|
|
end
|
|
|
|
scenario 'The current locale is selected' do
|
|
visit '/'
|
|
expect(page).to have_select('locale-switcher', selected: 'English')
|
|
end
|
|
|
|
scenario 'Changing the locale', :js do
|
|
visit '/'
|
|
expect(page).to have_content('Language')
|
|
|
|
select('Español', from: 'locale-switcher')
|
|
expect(page).to have_content('Idioma')
|
|
expect(page).not_to have_content('Language')
|
|
expect(page).to have_select('locale-switcher', selected: 'Español')
|
|
end
|
|
|
|
context "Only one locale" do
|
|
before do
|
|
allow(I18n).to receive(:available_locales).and_return([:en])
|
|
I18n.reload!
|
|
end
|
|
|
|
after { I18n.reload! }
|
|
|
|
scenario "Locale switcher not present" do
|
|
visit '/'
|
|
expect(page).not_to have_content('Language')
|
|
expect(page).not_to have_css('div.locale')
|
|
end
|
|
end
|
|
|
|
context "Missing language names" do
|
|
|
|
let!(:default_enforce) { I18n.enforce_available_locales }
|
|
let!(:default_locales) { I18n.available_locales.dup }
|
|
|
|
before do
|
|
I18n.enforce_available_locales = false
|
|
I18n.available_locales = default_locales + [:wl]
|
|
I18n.locale = :wl
|
|
end
|
|
|
|
after do
|
|
I18n.enforce_available_locales = default_enforce
|
|
I18n.available_locales = default_locales
|
|
I18n.locale = I18n.default_locale
|
|
end
|
|
|
|
scenario 'Available locales without language translation display locale key' do
|
|
visit '/'
|
|
|
|
within('.locale-form .js-location-changer') do
|
|
expect(page).to have_content 'wl'
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|