Files
openfoodnetwork/spec/system/consumer/multilingual_spec.rb
2026-03-18 14:49:34 +11:00

81 lines
2.2 KiB
Ruby

# frozen_string_literal: true
require 'system_helper'
RSpec.describe 'Multilingual' do
include AuthenticationHelper
include WebHelper
include CookieHelper
let(:user) { create(:user) }
it 'has three locales available' do
expect(Rails.application.config.i18n[:default_locale]).to eq 'en_TST'
expect(Rails.application.config.i18n[:locale]).to eq 'en_TST'
expect(Rails.application.config.i18n[:available_locales]).to eq ['en_TST', 'es', 'pt', 'en']
end
it 'can switch language by params' do
visit root_path
expect(pick_i18n_locale).to eq 'en_TST'
expect(get_i18n_translation('label_shops')).to eq 'Shops'
expect(cookies_name).not_to include('locale')
expect(page).to have_content 'SHOPS'
visit root_path(locale: 'es')
expect(pick_i18n_locale).to eq 'es'
expect(get_i18n_translation('label_shops')).to eq 'Tiendas'
expect_menu_and_cookie_in_es
# it is not in the list of available of available_locales
visit root_path(locale: 'it')
expect(pick_i18n_locale).to eq 'es'
expect(get_i18n_translation('label_shops')).to eq 'Tiendas'
expect_menu_and_cookie_in_es
end
it 'updates user locale from cookie if it is empty' do
visit root_path(locale: 'es')
expect_menu_and_cookie_in_es
expect(user.locale).to be_nil
login_as user
visit root_path
expect_menu_and_cookie_in_es
# The user's locale is not changed if the language was chosen before
# login. Is it a bug or a feature? Probably not important...
expect(user.reload.locale).to eq nil
visit root_path(locale: 'es')
expect(user.reload.locale).to eq 'es'
logout
expect_menu_and_cookie_in_es
expect(page).to have_content '¿Estás interesada en entrar en Open Food Network?'
end
it "allows switching language via the main navigation" do
visit root_path
expect(page).to have_content 'SHOPS'
find('.language-switcher').click
within '.language-switcher .dropdown' do
expect(page).not_to have_link 'English'
expect(page).to have_link 'Español'
click_link 'Español'
end
expect_menu_and_cookie_in_es
end
end
def expect_menu_and_cookie_in_es
expect(cookies_name['locale']).to have_attributes(value: "es")
expect(page).to have_content 'TIENDAS'
end