From ed67b71e5b34087e6a1a783fb5e37fe581a0a213 Mon Sep 17 00:00:00 2001 From: Jonathan Hefner Date: Fri, 22 Nov 2019 15:41:41 -0600 Subject: [PATCH] Prevent generating tests with non-existent routes This ensures generated tests are not broken by default when invoking the controller generator with one or more actions and "--skip-routes". --- .../test_unit/controller/controller_generator.rb | 2 ++ .../test_unit/controller/templates/functional_test.rb.tt | 2 +- railties/test/generators/controller_generator_test.rb | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/railties/lib/rails/generators/test_unit/controller/controller_generator.rb b/railties/lib/rails/generators/test_unit/controller/controller_generator.rb index 1a9ac6bf2a..88ebd65d6c 100644 --- a/railties/lib/rails/generators/test_unit/controller/controller_generator.rb +++ b/railties/lib/rails/generators/test_unit/controller/controller_generator.rb @@ -6,6 +6,8 @@ module TestUnit # :nodoc: module Generators # :nodoc: class ControllerGenerator < Base # :nodoc: argument :actions, type: :array, default: [], banner: "action action" + class_option :skip_routes, type: :boolean + check_class_collision suffix: "ControllerTest" def create_test_files diff --git a/railties/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt b/railties/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt index a69a24e281..29e41d0411 100644 --- a/railties/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt +++ b/railties/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt @@ -6,7 +6,7 @@ class <%= class_name %>ControllerTest < ActionDispatch::IntegrationTest include Engine.routes.url_helpers <% end -%> -<% if actions.empty? -%> +<% if actions.empty? || options[:skip_routes] -%> # test "the truth" do # assert true # end diff --git a/railties/test/generators/controller_generator_test.rb b/railties/test/generators/controller_generator_test.rb index 8786756c68..ae327ad801 100644 --- a/railties/test/generators/controller_generator_test.rb +++ b/railties/test/generators/controller_generator_test.rb @@ -75,6 +75,13 @@ def test_skip_routes end end + def test_skip_routes_prevents_generating_tests_with_routes + run_generator ["account", "foo", "--skip-routes"] + assert_file "test/controllers/account_controller_test.rb" do |controller_test| + assert_no_match(/account_foo_(url|path)/, controller_test) + end + end + def test_invokes_default_template_engine_even_with_no_action run_generator ["account"] assert_file "app/views/account" -- GitLab