From d3ab9093d7401028eee361030cfadd9ef2c64c65 Mon Sep 17 00:00:00 2001 From: Eloy Espinaco Date: Wed, 17 Jun 2020 17:36:34 -0300 Subject: [PATCH 1/3] Use consistent naming for request specs Controller generators are using a different naming scheme for requests specs that are now generated by default. Use always `spec/requests/posts_spec.rb` by default. This --- lib/generators/rspec/controller/controller_generator.rb | 2 +- spec/generators/rspec/controller/controller_generator_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/generators/rspec/controller/controller_generator.rb b/lib/generators/rspec/controller/controller_generator.rb index 58c7f3db64..c03ae83184 100644 --- a/lib/generators/rspec/controller/controller_generator.rb +++ b/lib/generators/rspec/controller/controller_generator.rb @@ -16,7 +16,7 @@ def generate_request_spec return unless options[:request_specs] template 'request_spec.rb', - File.join('spec/requests', class_path, "#{file_name}_request_spec.rb") + File.join('spec/requests', class_path, "#{file_name}_spec.rb") end def generate_controller_spec diff --git a/spec/generators/rspec/controller/controller_generator_spec.rb b/spec/generators/rspec/controller/controller_generator_spec.rb index 256be0be78..8516703f23 100644 --- a/spec/generators/rspec/controller/controller_generator_spec.rb +++ b/spec/generators/rspec/controller/controller_generator_spec.rb @@ -6,7 +6,7 @@ setup_default_destination 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 +38,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] From 6cffc0549b6a7fa25ab2421f23c20d4da4c3daa0 Mon Sep 17 00:00:00 2001 From: Eloy Espinaco Date: Wed, 17 Jun 2020 17:51:23 -0300 Subject: [PATCH 2/3] Reuse request spec generator shared examples Make sure that different generators are consistent on requests reusing the shared examples. --- lib/generators/rspec/controller/controller_generator.rb | 5 ++++- .../{request_spec.rb => request_with_actions_spec.rb} | 0 .../generators/rspec/controller/controller_generator_spec.rb | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) rename lib/generators/rspec/controller/templates/{request_spec.rb => request_with_actions_spec.rb} (100%) diff --git a/lib/generators/rspec/controller/controller_generator.rb b/lib/generators/rspec/controller/controller_generator.rb index c03ae83184..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,7 +17,8 @@ class ControllerGenerator < Base def generate_request_spec return unless options[:request_specs] - template '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 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 8516703f23..7e073d66d8 100644 --- a/spec/generators/rspec/controller/controller_generator_spec.rb +++ b/spec/generators/rspec/controller/controller_generator_spec.rb @@ -4,6 +4,7 @@ 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_spec.rb') } From c6f72acfa6669e9cfb19c07988cb8a7f43515b96 Mon Sep 17 00:00:00 2001 From: Eloy Espinaco Date: Thu, 18 Jun 2020 13:11:46 -0300 Subject: [PATCH 3/3] Fix example app generators conflicting files As now request specs follow the same naming convention the spec generated by `controller wombats index` does not match the one generated by `rspec:request wombats` because of the missing action. Using widgets instead of wombats makes sure both results are identical. --- example_app_generator/generate_stuff.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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')