2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-03-04 01:15:08 +08:00
discourse/spec/system/admin_welcome_banner_config_spec.rb
Kris 7d47a56492
UX: add locale to welcome banner config, fix variable references (#36962)
This adds a language dropdown to the welcome banner admin config area,
so text from languages beyond the current selection can also be
configured.

I also fixed the issue described here:
https://meta.discourse.org/t/welcome-header-text-site-name-gives-error-the-following-interpolation-key-is-invalid-site-name/392604/,
where we were over-promising which variables were available. These are
now described per field and are accurate to what's available.

I've also added some specs. 

Before:
<img width="600" alt="image"
src="https://github.com/user-attachments/assets/aefe5dc2-d833-4a63-b0d0-ae4a743128ab"
/>



After: 
<img width="450" alt="image"
src="https://github.com/user-attachments/assets/bc3c6556-8b24-47a7-812f-b5050f5f81d6"
/>

---------

Co-authored-by: Martin Brennan <martin@discourse.org>
2026-01-06 09:10:42 -05:00

63 lines
1.8 KiB
Ruby

# frozen_string_literal: true
describe "Admin Welcome Banner Config", type: :system 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
end
end