From eca95f90de3de7c6507fc529e00e1e36f136a234 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Tue, 28 Jul 2026 00:02:55 +0200 Subject: Let editors manage menu titles in both locales --- test/controllers/menu_items_controller_test.rb | 42 ++++++++++++++++++++-- .../page_translations_controller_test.rb | 2 +- 2 files changed, 40 insertions(+), 4 deletions(-) (limited to 'test/controllers') diff --git a/test/controllers/menu_items_controller_test.rb b/test/controllers/menu_items_controller_test.rb index c47467a3..15a7b30b 100644 --- a/test/controllers/menu_items_controller_test.rb +++ b/test/controllers/menu_items_controller_test.rb @@ -1,8 +1,44 @@ require 'test_helper' class MenuItemsControllerTest < ActionController::TestCase - # Replace this with your real tests. - test "the truth" do - assert true + def create_menu_item(title = "Ausgangstitel") + item = MenuItem.new(:path => "/menu_title_test") + item.titles = { I18n.default_locale.to_s => title } + item.save! + item + end + + test "updating stores a title per locale" do + login_as :quentin + item = create_menu_item + + patch :update, params: { :id => item.id, + :menu_item => { :titles => { "de" => "Transparenz", "en" => "Transparency" } } } + + assert_equal "Transparenz", item.reload.translations.find_by(:locale => "de").title + assert_equal "Transparency", item.translations.find_by(:locale => "en").title + end + + test "blanking a non-default title falls back to the default locale" do + login_as :quentin + item = create_menu_item + patch :update, params: { :id => item.id, + :menu_item => { :titles => { "de" => "Transparenz", "en" => "Transparency" } } } + + patch :update, params: { :id => item.id, + :menu_item => { :titles => { "de" => "Transparenz", "en" => "" } } } + + item.reload + assert_equal "Transparenz", Globalize.with_locale(:en) { item.title } + end + + test "a blank default title is rejected" do + login_as :quentin + item = create_menu_item + patch :update, params: { :id => item.id, + :menu_item => { :titles => { "de" => "" } } } + + assert_response :success # re-rendered :edit, not a redirect + assert_not_equal "", item.reload.translations.find_by(:locale => "de").title end end diff --git a/test/controllers/page_translations_controller_test.rb b/test/controllers/page_translations_controller_test.rb index 7484a203..31eefe84 100644 --- a/test/controllers/page_translations_controller_test.rb +++ b/test/controllers/page_translations_controller_test.rb @@ -30,7 +30,7 @@ class PageTranslationsControllerTest < ActionController::TestCase node = Node.root.children.create!(:slug => "translations_exit_test") node.lock_for_editing!(users(:quentin)) - patch :update, params: { :node_id => node.id, :translation_locale => "en", :page => { :title => "x" }, :commit => "Save + Unlock + Exit" } + patch :update, params: { :node_id => node.id, :translation_locale => "en", :page => { :title => "x" }, :unlock_exit => "1" } assert_nil node.reload.lock_owner assert_redirected_to node_path(node) -- cgit v1.3