diff --git a/example_app_generator/generate_stuff.rb b/example_app_generator/generate_stuff.rb index 581bb9ca78..32c8af0a5a 100644 --- a/example_app_generator/generate_stuff.rb +++ b/example_app_generator/generate_stuff.rb @@ -84,8 +84,8 @@ def using_source_path(path) generate('rspec:install') generate('controller wombats index') # plural generate('controller welcome index') # singular -generate('rspec:request wombats') generate('integration_test widgets') +generate('rspec:request widgets') generate('mailer Notifications signup') generate('model thing name:string') diff --git a/lib/generators/rspec/controller/controller_generator.rb b/lib/generators/rspec/controller/controller_generator.rb index 58c7f3db64..7ec05afb7f 100644 --- a/lib/generators/rspec/controller/controller_generator.rb +++ b/lib/generators/rspec/controller/controller_generator.rb @@ -4,6 +4,8 @@ module Rspec module Generators # @private class ControllerGenerator < Base + source_paths << File.expand_path('../integration/templates', __dir__) + argument :actions, type: :array, default: [], banner: "action action" class_option :template_engine, desc: "Template engine to generate view files" @@ -15,8 +17,9 @@ class ControllerGenerator < Base def generate_request_spec return unless options[:request_specs] - template 'request_spec.rb', - File.join('spec/requests', class_path, "#{file_name}_request_spec.rb") + template_file = actions.empty? ? 'request_spec.rb' : 'request_with_actions_spec.rb' + template template_file, + File.join('spec/requests', class_path, "#{file_name}_spec.rb") end def generate_controller_spec diff --git a/lib/generators/rspec/controller/templates/request_spec.rb b/lib/generators/rspec/controller/templates/request_with_actions_spec.rb similarity index 100% rename from lib/generators/rspec/controller/templates/request_spec.rb rename to lib/generators/rspec/controller/templates/request_with_actions_spec.rb diff --git a/spec/generators/rspec/controller/controller_generator_spec.rb b/spec/generators/rspec/controller/controller_generator_spec.rb index 256be0be78..7e073d66d8 100644 --- a/spec/generators/rspec/controller/controller_generator_spec.rb +++ b/spec/generators/rspec/controller/controller_generator_spec.rb @@ -4,9 +4,10 @@ RSpec.describe Rspec::Generators::ControllerGenerator, type: :generator do setup_default_destination + it_behaves_like "a request spec generator" describe 'request specs' do - subject { file('spec/requests/posts_request_spec.rb') } + subject { file('spec/requests/posts_spec.rb') } describe 'generated by default' do before do @@ -38,7 +39,7 @@ end describe 'with namespace and actions' do - subject { file('spec/requests/admin/external/users_request_spec.rb') } + subject { file('spec/requests/admin/external/users_spec.rb') } before do run_generator %w[admin::external::users index custom_action]