summaryrefslogtreecommitdiff
path: root/test/controllers/menu_items_controller_test.rb
blob: d09198a36bcf1d92bba44674e0ae920822e9cdc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
require 'test_helper'

class MenuItemsControllerTest < ActionController::TestCase
  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 :aaron
    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 :aaron
    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 :aaron
    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

  test "an editor without redaktion cannot reach the menu" do
    login_as :quentin
    get :index
    assert_redirected_to admin_path
    assert_equal I18n.t("flash.common.redaktion_required"), flash[:error]
  end
end