From e49f947dde8b573b3ca65055da04b82e44653c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Lu=CC=88dicke?= Date: Fri, 25 Sep 2020 19:08:20 +0200 Subject: [PATCH 1/5] Push down code from IntegrationGenerator to RequestGenerator and break the inheritance. IntegrationGenerator will get a deprecation so the inheritance made no sense. --- lib/generators/rspec/request/request_generator.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/generators/rspec/request/request_generator.rb b/lib/generators/rspec/request/request_generator.rb index b9e15f3ada..ccbe04bc5c 100644 --- a/lib/generators/rspec/request/request_generator.rb +++ b/lib/generators/rspec/request/request_generator.rb @@ -1,10 +1,19 @@ -require 'generators/rspec/integration/integration_generator' +require 'generators/rspec' module Rspec module Generators # @private - class RequestGenerator < IntegrationGenerator + class RequestGenerator < Base + class_option :request_specs, type: :boolean, default: true, desc: 'Generate request specs' + source_paths << File.expand_path('../integration/templates', __dir__) + + def generate_request_spec + return unless options[:request_specs] + + template 'request_spec.rb', + File.join('spec/requests', "#{name.underscore.pluralize}_spec.rb") + end end end end From f43ef45c77726b6f8e86a141291015f587c0fb58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Lu=CC=88dicke?= Date: Fri, 25 Sep 2020 19:09:02 +0200 Subject: [PATCH 2/5] Deprecate IntegrationGenerator --- .../rspec/integration/integration_generator.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/generators/rspec/integration/integration_generator.rb b/lib/generators/rspec/integration/integration_generator.rb index f820b017f9..c3c36ab8fd 100644 --- a/lib/generators/rspec/integration/integration_generator.rb +++ b/lib/generators/rspec/integration/integration_generator.rb @@ -1,11 +1,10 @@ require 'generators/rspec' +require 'rspec/core/warnings' module Rspec module Generators # @private class IntegrationGenerator < Base - # Add a deprecation for this class, before rspec-rails 4, to use the - # `RequestGenerator` instead class_option :request_specs, type: :boolean, default: true, @@ -14,6 +13,12 @@ class IntegrationGenerator < Base def generate_request_spec return unless options[:request_specs] + RSpec.warn_deprecation <<-WARNING.gsub(/\s*\|/, ' ') + |The integration generator is deprecated + |and will be deleted in RSpec-Rails 5. + |Please use the request generator instead. + WARNING + template 'request_spec.rb', File.join('spec/requests', "#{name.underscore.pluralize}_spec.rb") end From 03f98a0f84109b48e9ec4366415656e800fd92d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Lu=CC=88dicke?= Date: Sat, 26 Sep 2020 13:32:06 +0200 Subject: [PATCH 3/5] Move request spec template to correct directory --- lib/generators/rspec/integration/integration_generator.rb | 4 +++- lib/generators/rspec/request/request_generator.rb | 2 -- .../rspec/{integration => request}/templates/request_spec.rb | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename lib/generators/rspec/{integration => request}/templates/request_spec.rb (100%) diff --git a/lib/generators/rspec/integration/integration_generator.rb b/lib/generators/rspec/integration/integration_generator.rb index c3c36ab8fd..c0de337d72 100644 --- a/lib/generators/rspec/integration/integration_generator.rb +++ b/lib/generators/rspec/integration/integration_generator.rb @@ -10,12 +10,14 @@ class IntegrationGenerator < Base default: true, desc: "Generate request specs" + source_paths << File.expand_path('../request/templates', __dir__) + def generate_request_spec return unless options[:request_specs] RSpec.warn_deprecation <<-WARNING.gsub(/\s*\|/, ' ') |The integration generator is deprecated - |and will be deleted in RSpec-Rails 5. + |and will be deleted in RSpec-Rails 7. |Please use the request generator instead. WARNING diff --git a/lib/generators/rspec/request/request_generator.rb b/lib/generators/rspec/request/request_generator.rb index ccbe04bc5c..ea8bd182e2 100644 --- a/lib/generators/rspec/request/request_generator.rb +++ b/lib/generators/rspec/request/request_generator.rb @@ -6,8 +6,6 @@ module Generators class RequestGenerator < Base class_option :request_specs, type: :boolean, default: true, desc: 'Generate request specs' - source_paths << File.expand_path('../integration/templates', __dir__) - def generate_request_spec return unless options[:request_specs] diff --git a/lib/generators/rspec/integration/templates/request_spec.rb b/lib/generators/rspec/request/templates/request_spec.rb similarity index 100% rename from lib/generators/rspec/integration/templates/request_spec.rb rename to lib/generators/rspec/request/templates/request_spec.rb From 286057202d9bd86cd3bce1e49b1fe3ca0098b91b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Lu=CC=88dicke?= Date: Sun, 11 Oct 2020 11:18:40 +0200 Subject: [PATCH 4/5] Add only one test for integration generator deprecation --- .../rspec/integration/integration_generator_spec.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spec/generators/rspec/integration/integration_generator_spec.rb b/spec/generators/rspec/integration/integration_generator_spec.rb index ac8ffe16a2..e0777bb85b 100644 --- a/spec/generators/rspec/integration/integration_generator_spec.rb +++ b/spec/generators/rspec/integration/integration_generator_spec.rb @@ -1,8 +1,14 @@ # Generators are not automatically loaded by Rails require 'generators/rspec/integration/integration_generator' require 'support/generators' +require 'rspec/core/warnings' RSpec.describe Rspec::Generators::IntegrationGenerator, type: :generator do setup_default_destination it_behaves_like "a request spec generator" + + it 'is deprecated' do + expect(RSpec).to receive(:warn_deprecation) + run_generator %w[posts] + end end From fe42d6bc3f9c1637da944461961f64c81c2a98bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Lu=CC=88dicke?= Date: Sat, 17 Oct 2020 16:37:02 +0200 Subject: [PATCH 5/5] Add integration generator deprecation to changelog --- Changelog.md | 6 ++++++ example_app_generator/generate_stuff.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 8e122eecb0..5d12cece2e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,12 @@ Breaking Changes: * Change the order of `after_teardown` from `after` to `around` in system specs to improve compatibility with extensions and Capybara. (Tim Diggins, #2596) +Deprecations: + +* Deprecates integration spec generator (`rspec:integration`) + which was an alias of request spec generator (`rspec:request`) + (Luka Lüdicke, #2374) + ### 6.0.0.rc1 Enhancements: diff --git a/example_app_generator/generate_stuff.rb b/example_app_generator/generate_stuff.rb index 2431720d62..b1aca91876 100644 --- a/example_app_generator/generate_stuff.rb +++ b/example_app_generator/generate_stuff.rb @@ -89,7 +89,7 @@ def using_source_path(path) # request specs are now the default generate('rspec:controller wombats --no-request-specs --controller-specs --no-view-specs') -generate('integration_test widgets') +generate('integration_test widgets') # deprecated generate('mailer Notifications signup') generate('model thing name:string')