discourse/spec/system/admin_welcome_banner_config_spec.rb
2026-03-20 00:39:52 +01:00

88 lines
2.6 KiB
Ruby

# frozen_string_literal: true
describe "Admin Welcome Banner Config" do
fab!(:admin)
let(:config_page) { PageObjects::Pages::AdminWelcomeBannerConfig.new }
before do
sign_in(admin)
SiteSetting.allow_user_locale = true
end
after do
TranslationOverride.delete_all
I18n.reload!
end
describe "locale selector" do
it "displays a locale selector" do
config_page.visit
expect(config_page).to have_locale_selector
end
it "switches between locales and loads appropriate translations" do
TranslationOverride.upsert!(
"fr",
"js.welcome_banner.header.new_members",
"Bienvenue %{preferred_display_name}!",
)
TranslationOverride.upsert!("fr", "js.welcome_banner.search_placeholder", "Rechercher")
config_page.visit
expect(config_page.header_new_members_value).to eq("Welcome, %{preferred_display_name}!")
expect(config_page.search_placeholder_value).to eq("Search")
config_page.select_locale("fr")
expect(config_page.header_new_members_value).to eq("Bienvenue %{preferred_display_name}!")
expect(config_page.search_placeholder_value).to eq("Rechercher")
end
it "saves translations to the selected locale" do
config_page.visit
config_page.select_locale("fr")
config_page.fill_header_new_members("Bonjour %{preferred_display_name}!")
config_page.submit
expect(config_page).to have_saved_message
french_override =
TranslationOverride.find_by(
locale: "fr",
translation_key: "js.welcome_banner.header.new_members",
)
expect(french_override.value).to eq("Bonjour %{preferred_display_name}!")
config_page.visit
expect(config_page.header_new_members_value).to eq("Welcome, %{preferred_display_name}!")
end
it "does not overwrite existing translation overrides when switching locales without changes" do
TranslationOverride.upsert!(
"fr",
"js.welcome_banner.header.new_members",
"Bienvenue %{preferred_display_name}!",
)
override =
TranslationOverride.find_by(
locale: "fr",
translation_key: "js.welcome_banner.header.new_members",
)
timestamp_before = override.updated_at
config_page.visit
config_page.select_locale("fr")
expect(config_page.header_new_members_value).to eq("Bienvenue %{preferred_display_name}!")
config_page.submit
expect(config_page).to have_saved_message
override.reload
expect(override.updated_at).to eq_time(timestamp_before)
end
end
end