diff --git a/test/controllers/application/localization_test.rb b/test/controllers/application/localization_test.rb index 7aac58c0e..dca42f40a 100644 --- a/test/controllers/application/localization_test.rb +++ b/test/controllers/application/localization_test.rb @@ -3,20 +3,16 @@ class ApplicationControllerTest < ActionController::TestCase include Devise::Test::ControllerHelpers - def setup - ApplicationController.class_eval do - def any_action + setup do + @controller = Class.new(ApplicationController) do + def locale render plain: I18n.locale end - end - - # If disable_clear_and_finalize is set to true, Rails will not clear other - # routes when calling again the draw method. Look at the source code at: - # https://www.rubydoc.info/gems/actionpack/ActionDispatch/Routing/RouteSet#draw-instance_method - Rails.application.routes.disable_clear_and_finalize = true + end.new - Rails.application.routes.draw do - get "any_action" => "application#any_action" + @routes = ActionDispatch::Routing::RouteSet.new + @routes.draw do + get "locale" => "anonymous#locale" end @actual_locales = I18n.available_locales @@ -32,15 +28,15 @@ def teardown test "team locale is nil, user locale is nil" do sign_in @user - get :any_action + get :locale assert_equal I18n.default_locale.to_s, response.body end test "team locale is nil, user locale is nil, HTTP_ACCEPT_LANGUAGE equals es" do - @request.headers["HTTP_ACCEPT_LANGUAGE"] = "es" + request.headers["HTTP_ACCEPT_LANGUAGE"] = "es" sign_in @user - get :any_action + get :locale assert_equal "es", response.body end @@ -48,7 +44,7 @@ def teardown sign_in @user @user.current_team.update!(locale: "es") - get :any_action + get :locale assert_equal "es", response.body end @@ -57,7 +53,7 @@ def teardown @user.current_team.update!(locale: "es") @user.update!(locale: "de") - get :any_action + get :locale assert_equal "de", response.body end @@ -65,7 +61,7 @@ def teardown sign_in @user @user.update!(locale: "de") - get :any_action + get :locale assert_equal "de", response.body end @@ -74,26 +70,26 @@ def teardown @user.update!(locale: "") @user.current_team.update!(locale: "es") - get :any_action + get :locale assert_equal "es", response.body end test "user not signed in" do - get :any_action + get :locale assert_equal I18n.default_locale.to_s, response.body end test "user not signed in and browser sends HTTP_ACCEPT_LANGUAGE" do - @request.headers["HTTP_ACCEPT_LANGUAGE"] = "de" + request.headers["HTTP_ACCEPT_LANGUAGE"] = "de" - get :any_action + get :locale assert_equal "de", response.body end test "user not signed in and browser sends HTTP_ACCEPT_LANGUAGE with unknown value" do - @request.headers["HTTP_ACCEPT_LANGUAGE"] = "this-language-does-not-really-exist" + request.headers["HTTP_ACCEPT_LANGUAGE"] = "this-language-does-not-really-exist" - get :any_action + get :locale assert_equal I18n.default_locale.to_s, response.body end end