From 49e843d7634c75c3e438a202595293ff9c26f8db Mon Sep 17 00:00:00 2001 From: Dan Pickett Date: Sat, 8 Aug 2009 14:07:07 -0400 Subject: [PATCH] --skip-helper option for controller generator --- .../components/controller/controller_generator.rb | 27 ++++++++++++++------ railties/test/generators/generator_test_helper.rb | 17 +++++++++++- .../generators/rails_controller_generator_test.rb | 10 +++++++ 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/railties/lib/rails_generator/generators/components/controller/controller_generator.rb b/railties/lib/rails_generator/generators/components/controller/controller_generator.rb index dc126e8..5ac14a9 100644 --- a/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +++ b/railties/lib/rails_generator/generators/components/controller/controller_generator.rb @@ -1,4 +1,5 @@ class ControllerGenerator < Rails::Generator::NamedBase + default_options :skip_helper => false def manifest record do |m| # Check for class naming collisions. @@ -22,15 +23,17 @@ class ControllerGenerator < Rails::Generator::NamedBase class_path, "#{file_name}_controller_test.rb") - m.template 'helper.rb', - File.join('app/helpers', - class_path, - "#{file_name}_helper.rb") + unless options[:skip_helper] + m.template 'helper.rb', + File.join('app/helpers', + class_path, + "#{file_name}_helper.rb") - m.template 'helper_test.rb', - File.join('test/unit/helpers', - class_path, - "#{file_name}_helper_test.rb") + m.template 'helper_test.rb', + File.join('test/unit/helpers', + class_path, + "#{file_name}_helper_test.rb") + end # View template for each action. actions.each do |action| @@ -40,4 +43,12 @@ class ControllerGenerator < Rails::Generator::NamedBase end end end + + protected + def add_options!(opt) + opt.separator '' + opt.separator 'Options:' + opt.on("--skip-helper", + "Don't add helper and helper test for this controller") { |v| options[:skip_helper] = v } + end end diff --git a/railties/test/generators/generator_test_helper.rb b/railties/test/generators/generator_test_helper.rb index 01bf1c9..a77b559 100644 --- a/railties/test/generators/generator_test_helper.rb +++ b/railties/test/generators/generator_test_helper.rb @@ -135,6 +135,13 @@ class GeneratorTestCase < Test::Unit::TestCase yield body if block_given? end end + + # Asserts that the given helper was not generated + # It takes a name of symbol without the _helper part + def assert_skipped_helper_for(name) + helper_file = "#{RAILS_ROOT}/app/helpers/#{name}_helper.rb" + assert !File.exist?(helper_file), "should not create helper #{helper_file}" + end # Asserts that the given functional test was generated. # It takes a name or symbol without the _controller_test part and an optional super class. @@ -144,7 +151,7 @@ class GeneratorTestCase < Test::Unit::TestCase yield body if block_given? end end - + # Asserts that the given helper test test was generated. # It takes a name or symbol without the _helper_test part and an optional super class. # The contents of the class source file is passed to a block. @@ -157,6 +164,14 @@ class GeneratorTestCase < Test::Unit::TestCase yield body if block_given? end end + + # Asserts that the given helper test test was generated. + # It takes a name or symbol without the _helper_test part and an optional super class. + # The contents of the class source file is passed to a block. + def assert_skipped_helper_test_for(name) + helper_test_file = "#{RAILS_ROOT}/test/unit/helpers/#{name.to_s.underscore}_helper_test.rb" + assert !File.exist?(helper_test_file), "should not create helper test #{helper_test_file}" + end # Asserts that the given unit test was generated. # It takes a name or symbol without the _test part and an optional super class. diff --git a/railties/test/generators/rails_controller_generator_test.rb b/railties/test/generators/rails_controller_generator_test.rb index 43fbe97..6ea05ac 100644 --- a/railties/test/generators/rails_controller_generator_test.rb +++ b/railties/test/generators/rails_controller_generator_test.rb @@ -41,4 +41,14 @@ class RailsControllerGeneratorTest < GeneratorTestCase end end end + + def test_controller_skips_helper + run_generator('controller', %w(products --skip-helper)) + + assert_generated_controller_for :products + assert_generated_functional_test_for :products + + assert_skipped_helper_for :products + assert_skipped_helper_test_for :products + end end -- 1.5.6.1