rspec-rails 6.0.0.rc1 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/Changelog.md +24 -5
  4. data/lib/generators/rspec/channel/channel_generator.rb +1 -1
  5. data/lib/generators/rspec/controller/controller_generator.rb +4 -4
  6. data/lib/generators/rspec/feature/feature_generator.rb +1 -1
  7. data/lib/generators/rspec/generator/generator_generator.rb +1 -1
  8. data/lib/generators/rspec/helper/helper_generator.rb +1 -1
  9. data/lib/generators/rspec/install/install_generator.rb +19 -2
  10. data/lib/generators/rspec/install/templates/spec/rails_helper.rb +1 -1
  11. data/lib/generators/rspec/integration/integration_generator.rb +10 -3
  12. data/lib/generators/rspec/job/job_generator.rb +1 -1
  13. data/lib/generators/rspec/mailbox/mailbox_generator.rb +1 -1
  14. data/lib/generators/rspec/mailer/mailer_generator.rb +3 -3
  15. data/lib/generators/rspec/model/model_generator.rb +3 -3
  16. data/lib/generators/rspec/request/request_generator.rb +10 -3
  17. data/lib/generators/rspec/{integration → request}/templates/request_spec.rb +0 -0
  18. data/lib/generators/rspec/scaffold/scaffold_generator.rb +4 -4
  19. data/lib/generators/rspec/scaffold/templates/api_controller_spec.rb +1 -1
  20. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +1 -1
  21. data/lib/generators/rspec/scaffold/templates/edit_spec.rb +8 -4
  22. data/lib/generators/rspec/scaffold/templates/show_spec.rb +1 -1
  23. data/lib/generators/rspec/system/system_generator.rb +1 -1
  24. data/lib/generators/rspec/view/view_generator.rb +2 -2
  25. data/lib/generators/rspec.rb +18 -1
  26. data/lib/rspec/rails/adapters.rb +10 -0
  27. data/lib/rspec/rails/configuration.rb +12 -11
  28. data/lib/rspec/rails/example/rails_example_group.rb +1 -0
  29. data/lib/rspec/rails/example/system_example_group.rb +12 -11
  30. data/lib/rspec/rails/example/view_example_group.rb +1 -1
  31. data/lib/rspec/rails/feature_check.rb +1 -1
  32. data/lib/rspec/rails/fixture_file_upload_support.rb +13 -30
  33. data/lib/rspec/rails/matchers/action_cable/have_broadcasted_to.rb +1 -1
  34. data/lib/rspec/rails/matchers/active_job.rb +1 -1
  35. data/lib/rspec/rails/matchers/have_enqueued_mail.rb +1 -1
  36. data/lib/rspec/rails/matchers/have_http_status.rb +1 -1
  37. data/lib/rspec/rails/matchers/routing_matchers.rb +2 -2
  38. data/lib/rspec/rails/vendor/capybara.rb +1 -3
  39. data/lib/rspec/rails/version.rb +1 -1
  40. data/lib/rspec/rails/view_assigns.rb +0 -18
  41. data/lib/rspec/rails/view_rendering.rb +2 -8
  42. data/lib/rspec-rails.rb +1 -5
  43. data.tar.gz.sig +0 -0
  44. metadata +10 -22
  45. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e5b8e558204b4aa74489900d89ab1b5b413df21a38e5294346954432a7b0720
4
- data.tar.gz: aa907c72c9e7e8e9b4050a7278e369623a1b038560df95fa1e1136372bcb7a2d
3
+ metadata.gz: f578abb8223c3c509323ce5d3204987a37ab32f238ed7f5c49eee24e283cd89d
4
+ data.tar.gz: 18afc82a8cb2ed0549a2c351980edfcf43b4fc3b1e49430e8b0c22deefb682a2
5
5
  SHA512:
6
- metadata.gz: 011d4e18b91b00620daaf0c9458d01746940d20ccf3e295274ef0842fe7e3963520dea370c42fdaeb2c041f1999735305bfcb1770d8b2a9567ef37bbb878572f
7
- data.tar.gz: f00aca8c607b36e3c1deff9afc5c472bf5e38721266082c8918222503ef38b9e4e41d590ef154a37e68cfe70670466f6d9f6f8830c0d8ce4b7af8dea85ecaa7a
6
+ metadata.gz: 3b64e3d8ab94e864aa53cd14420763c47b2b841365c9c11a554b143082648dfe474ac2dc251c18a6c0bbe920c76bd6a4382d4ff124bb636ba4c6fd6ddf364523
7
+ data.tar.gz: 2d47dbae246f110999db1e27c551cd079838363727b1127cdf87ea36aae07651677b119765425e649abc897b6524ab9da170b95f0acf93309526f2fd7bd32c42
checksums.yaml.gz.sig CHANGED
Binary file
data/Changelog.md CHANGED
@@ -1,16 +1,35 @@
1
1
  ### Development
2
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.1.1...main)
2
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.0.0...6-0-maintenance)
3
3
 
4
- ### 6.0.0.rc1
4
+ ### 6.0.0
5
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.1.2...6.0.0)
5
6
 
6
7
  Enhancements:
7
8
 
8
9
  * Support Rails 7
10
+ * Template tweaks to remove instance variables from generated specs. (Takuma Ishikawa, #2599)
11
+ * Generators now respects default path configuration option. (@vivekmiyani, #2508)
9
12
 
10
13
  Breaking Changes:
11
14
 
12
15
  * Drop support for Rails below 6.1
13
16
  * Drop support for Ruby below 2.5 (following supported versions of Rails 6.1)
17
+ * Change the order of `after_teardown` from `after` to `around` in system
18
+ specs to improve compatibility with extensions and Capybara. (Tim Diggins, #2596)
19
+
20
+ Deprecations:
21
+
22
+ * Deprecates integration spec generator (`rspec:integration`)
23
+ which was an alias of request spec generator (`rspec:request`)
24
+ (Luka Lüdicke, #2374)
25
+
26
+ ### 5.1.2 / 2022-04-24
27
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.1.1...v5.1.2)
28
+
29
+ Bug Fixes:
30
+
31
+ * Fix controller scaffold templates parameter name. (Taketo Takashima, #2591)
32
+ * Include generator specs in the inferred list of specs. (Jason Karns, #2597)
14
33
 
15
34
  ### 5.1.1 / 2022-03-07
16
35
  [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.1.0...v5.1.1)
@@ -85,7 +104,7 @@ Bug Fixes:
85
104
 
86
105
  Enhancements:
87
106
 
88
- * Issue a warning when using job matchers with `#at` mis-match on `usec` precision.
107
+ * Issue a warning when using job matchers with `#at` mismatch on `usec` precision.
89
108
  (Jon Rowe, #2350)
90
109
  * Generated request specs now have a bare `_spec` suffix instead of `request_spec`.
91
110
  (Eloy Espinaco, Luka Lüdicke, #2355, #2356, #2378)
@@ -212,7 +231,7 @@ Bug Fixes:
212
231
 
213
232
  Bug Fixes:
214
233
 
215
- * Namespaced fixtures now generate a `/` seperated path rather than an `_`.
234
+ * Namespaced fixtures now generate a `/` separated path rather than an `_`.
216
235
  (@nxlith, #2077)
217
236
  * Check the arity of `errors` before attempting to use it to generate the `be_valid`
218
237
  error message. (Kevin Kuchta, #2096)
@@ -372,7 +391,7 @@ Enhancements:
372
391
 
373
392
  Bug fixes:
374
393
 
375
- * Prevent asset helpers from taking precendence over route helpers. (Prem Sichanugrist, #1496)
394
+ * Prevent asset helpers from taking precedence over route helpers. (Prem Sichanugrist, #1496)
376
395
  * Prevent `NoMethodError` during failed `have_rendered` assertions on weird templates.
377
396
  (Jon Rowe, #1623).
378
397
 
@@ -5,7 +5,7 @@ module Rspec
5
5
  # @private
6
6
  class ChannelGenerator < Base
7
7
  def create_channel_spec
8
- template 'channel_spec.rb.erb', File.join('spec/channels', class_path, "#{file_name}_channel_spec.rb")
8
+ template 'channel_spec.rb.erb', target_path('channels', class_path, "#{file_name}_channel_spec.rb")
9
9
  end
10
10
  end
11
11
  end
@@ -16,14 +16,14 @@ module Rspec
16
16
  return unless options[:request_specs]
17
17
 
18
18
  template 'request_spec.rb',
19
- File.join('spec/requests', class_path, "#{file_name}_spec.rb")
19
+ target_path('requests', class_path, "#{file_name}_spec.rb")
20
20
  end
21
21
 
22
22
  def generate_controller_spec
23
23
  return unless options[:controller_specs]
24
24
 
25
25
  template 'controller_spec.rb',
26
- File.join('spec/controllers', class_path, "#{file_name}_controller_spec.rb")
26
+ target_path('controllers', class_path, "#{file_name}_controller_spec.rb")
27
27
  end
28
28
 
29
29
  def generate_view_specs
@@ -35,7 +35,7 @@ module Rspec
35
35
  actions.each do |action|
36
36
  @action = action
37
37
  template 'view_spec.rb',
38
- File.join("spec", "views", file_path, "#{@action}.html.#{options[:template_engine]}_spec.rb")
38
+ target_path('views', file_path, "#{@action}.html.#{options[:template_engine]}_spec.rb")
39
39
  end
40
40
  end
41
41
 
@@ -44,7 +44,7 @@ module Rspec
44
44
  return unless options[:routing_specs]
45
45
 
46
46
  template 'routing_spec.rb',
47
- File.join('spec/routing', class_path, "#{file_name}_routing_spec.rb")
47
+ target_path('routing', class_path, "#{file_name}_routing_spec.rb")
48
48
  end
49
49
  end
50
50
  end
@@ -10,7 +10,7 @@ module Rspec
10
10
  def generate_feature_spec
11
11
  return unless options[:feature_specs]
12
12
 
13
- template template_name, File.join('spec/features', class_path, filename)
13
+ template template_name, target_path('features', class_path, filename)
14
14
  end
15
15
 
16
16
  def template_name
@@ -9,7 +9,7 @@ module Rspec
9
9
  def generate_generator_spec
10
10
  return unless options[:generator_specs]
11
11
 
12
- template template_name, File.join('spec/generator', class_path, filename)
12
+ template template_name, target_path('generator', class_path, filename)
13
13
  end
14
14
 
15
15
  def template_name
@@ -9,7 +9,7 @@ module Rspec
9
9
  def generate_helper_spec
10
10
  return unless options[:helper_specs]
11
11
 
12
- template 'helper_spec.rb', File.join('spec/helpers', class_path, "#{file_name}_helper_spec.rb")
12
+ template 'helper_spec.rb', target_path('helpers', class_path, "#{file_name}_helper_spec.rb")
13
13
  end
14
14
  end
15
15
  end
@@ -12,6 +12,8 @@ Description:
12
12
  Copy rspec files to your application.
13
13
  DESC
14
14
 
15
+ class_option :default_path, type: :string, default: 'spec'
16
+
15
17
  def self.source_root
16
18
  @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
17
19
  end
@@ -20,12 +22,12 @@ DESC
20
22
  Dir.mktmpdir do |dir|
21
23
  generate_rspec_init dir
22
24
  template File.join(dir, '.rspec'), '.rspec'
23
- directory File.join(dir, 'spec'), 'spec'
25
+ directory File.join(dir, 'spec'), default_path
24
26
  end
25
27
  end
26
28
 
27
29
  def copy_rails_files
28
- template 'spec/rails_helper.rb'
30
+ template 'spec/rails_helper.rb', "#{default_path}/rails_helper.rb"
29
31
  end
30
32
 
31
33
  private
@@ -41,6 +43,12 @@ DESC
41
43
 
42
44
  replace_generator_command(spec_helper_path)
43
45
  remove_warnings_configuration(spec_helper_path)
46
+
47
+ unless default_path == "spec"
48
+ dot_rspec_path = File.join(tmpdir, '.rspec')
49
+
50
+ append_default_path(dot_rspec_path)
51
+ end
44
52
  end
45
53
 
46
54
  def replace_generator_command(spec_helper_path)
@@ -58,6 +66,15 @@ DESC
58
66
  '',
59
67
  verbose: false
60
68
  end
69
+
70
+ def append_default_path(dot_rspec_path)
71
+ append_to_file dot_rspec_path,
72
+ "--default-path #{default_path}"
73
+ end
74
+
75
+ def default_path
76
+ options[:default_path]
77
+ end
61
78
  end
62
79
  end
63
80
  end
@@ -48,7 +48,7 @@ RSpec.configure do |config|
48
48
  # Remove this line to enable support for ActiveRecord
49
49
  config.use_active_record = false
50
50
 
51
- # If you enable ActiveRecord support you should unncomment these lines,
51
+ # If you enable ActiveRecord support you should uncomment these lines,
52
52
  # note if you'd prefer not to run each example within a transaction, you
53
53
  # should set use_transactional_fixtures to false.
54
54
  #
@@ -1,21 +1,28 @@
1
1
  require 'generators/rspec'
2
+ require 'rspec/core/warnings'
2
3
 
3
4
  module Rspec
4
5
  module Generators
5
6
  # @private
6
7
  class IntegrationGenerator < Base
7
- # Add a deprecation for this class, before rspec-rails 4, to use the
8
- # `RequestGenerator` instead
9
8
  class_option :request_specs,
10
9
  type: :boolean,
11
10
  default: true,
12
11
  desc: "Generate request specs"
13
12
 
13
+ source_paths << File.expand_path('../request/templates', __dir__)
14
+
14
15
  def generate_request_spec
15
16
  return unless options[:request_specs]
16
17
 
18
+ RSpec.warn_deprecation <<-WARNING.gsub(/\s*\|/, ' ')
19
+ |The integration generator is deprecated
20
+ |and will be deleted in RSpec-Rails 7.
21
+ |Please use the request generator instead.
22
+ WARNING
23
+
17
24
  template 'request_spec.rb',
18
- File.join('spec/requests', "#{name.underscore.pluralize}_spec.rb")
25
+ target_path('requests', "#{name.underscore.pluralize}_spec.rb")
19
26
  end
20
27
  end
21
28
  end
@@ -6,7 +6,7 @@ module Rspec
6
6
  class JobGenerator < Base
7
7
  def create_job_spec
8
8
  file_suffix = file_name.end_with?('job') ? 'spec.rb' : 'job_spec.rb'
9
- template 'job_spec.rb.erb', File.join('spec/jobs', class_path, [file_name, file_suffix].join('_'))
9
+ template 'job_spec.rb.erb', target_path('jobs', class_path, [file_name, file_suffix].join('_'))
10
10
  end
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Rspec
6
6
  class MailboxGenerator < Base
7
7
  def create_mailbox_spec
8
8
  template('mailbox_spec.rb.erb',
9
- File.join('spec/mailboxes', class_path, "#{file_name}_mailbox_spec.rb")
9
+ target_path('mailboxes', class_path, "#{file_name}_mailbox_spec.rb")
10
10
  )
11
11
  end
12
12
  end
@@ -8,20 +8,20 @@ module Rspec
8
8
  argument :actions, type: :array, default: [], banner: "method method"
9
9
 
10
10
  def generate_mailer_spec
11
- template "mailer_spec.rb", File.join('spec/mailers', class_path, "#{file_name}_spec.rb")
11
+ template "mailer_spec.rb", target_path('mailers', class_path, "#{file_name}_spec.rb")
12
12
  end
13
13
 
14
14
  def generate_fixtures_files
15
15
  actions.each do |action|
16
16
  @action, @path = action, File.join(file_path, action)
17
- template "fixture", File.join("spec/fixtures", @path)
17
+ template "fixture", target_path("fixtures", @path)
18
18
  end
19
19
  end
20
20
 
21
21
  def generate_preview_files
22
22
  return unless RSpec::Rails::FeatureCheck.has_action_mailer_preview?
23
23
 
24
- template "preview.rb", File.join("spec/mailers/previews", class_path, "#{file_name}_preview.rb")
24
+ template "preview.rb", target_path("mailers/previews", class_path, "#{file_name}_preview.rb")
25
25
  end
26
26
  end
27
27
  end
@@ -11,8 +11,8 @@ module Rspec
11
11
  class_option :fixture, type: :boolean
12
12
 
13
13
  def create_model_spec
14
- template_file = File.join(
15
- 'spec/models',
14
+ template_file = target_path(
15
+ 'models',
16
16
  class_path,
17
17
  "#{file_name}_spec.rb"
18
18
  )
@@ -24,7 +24,7 @@ module Rspec
24
24
  def create_fixture_file
25
25
  return unless missing_fixture_replacement?
26
26
 
27
- template 'fixtures.yml', File.join('spec/fixtures', class_path, "#{(pluralize_table_names? ? plural_file_name : file_name)}.yml")
27
+ template 'fixtures.yml', target_path('fixtures', class_path, "#{(pluralize_table_names? ? plural_file_name : file_name)}.yml")
28
28
  end
29
29
 
30
30
  private
@@ -1,10 +1,17 @@
1
- require 'generators/rspec/integration/integration_generator'
1
+ require 'generators/rspec'
2
2
 
3
3
  module Rspec
4
4
  module Generators
5
5
  # @private
6
- class RequestGenerator < IntegrationGenerator
7
- source_paths << File.expand_path('../integration/templates', __dir__)
6
+ class RequestGenerator < Base
7
+ class_option :request_specs, type: :boolean, default: true, desc: 'Generate request specs'
8
+
9
+ def generate_request_spec
10
+ return unless options[:request_specs]
11
+
12
+ template 'request_spec.rb',
13
+ target_path('requests', "#{name.underscore.pluralize}_spec.rb")
14
+ end
8
15
  end
9
16
  end
10
17
  end
@@ -58,8 +58,8 @@ module Rspec
58
58
  def generate_routing_spec
59
59
  return unless options[:routing_specs]
60
60
 
61
- template_file = File.join(
62
- 'spec/routing',
61
+ template_file = target_path(
62
+ 'routing',
63
63
  controller_class_path,
64
64
  "#{controller_file_name}_routing_spec.rb"
65
65
  )
@@ -72,7 +72,7 @@ module Rspec
72
72
 
73
73
  def copy_view(view)
74
74
  template "#{view}_spec.rb",
75
- File.join("spec/views", controller_file_path, "#{view}.html.#{options[:template_engine]}_spec.rb")
75
+ target_path("views", controller_file_path, "#{view}.html.#{options[:template_engine]}_spec.rb")
76
76
  end
77
77
 
78
78
  # support for namespaced-resources
@@ -121,7 +121,7 @@ module Rspec
121
121
  end
122
122
 
123
123
  def template_file(folder:, suffix: '')
124
- File.join('spec', folder, controller_class_path, "#{controller_file_name}#{suffix}_spec.rb")
124
+ target_path(folder, controller_class_path, "#{controller_file_name}#{suffix}_spec.rb")
125
125
  end
126
126
 
127
127
  def banner
@@ -100,7 +100,7 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
100
100
 
101
101
  it "renders a JSON response with the <%= singular_table_name %>" do
102
102
  <%= file_name %> = <%= class_name %>.create! valid_attributes
103
- put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: valid_attributes}, session: valid_session
103
+ put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: new_attributes}, session: valid_session
104
104
  expect(response).to have_http_status(:ok)
105
105
  expect(response.content_type).to eq('application/json')
106
106
  end
@@ -119,7 +119,7 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
119
119
 
120
120
  it "redirects to the <%= singular_table_name %>" do
121
121
  <%= file_name %> = <%= class_name %>.create! valid_attributes
122
- put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: valid_attributes}, session: valid_session
122
+ put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: new_attributes}, session: valid_session
123
123
  expect(response).to redirect_to(<%= file_name %>)
124
124
  end
125
125
  end
@@ -2,18 +2,22 @@ require 'rails_helper'
2
2
 
3
3
  <% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
4
4
  RSpec.describe "<%= ns_table_name %>/edit", <%= type_metatag(:view) %> do
5
- before(:each) do
6
- @<%= ns_file_name %> = assign(:<%= ns_file_name %>, <%= class_name %>.create!(<%= '))' if output_attributes.empty? %>
5
+ let(:<%= ns_file_name %>) {
6
+ <%= class_name %>.create!(<%= ')' if output_attributes.empty? %>
7
7
  <% output_attributes.each_with_index do |attribute, attribute_index| -%>
8
8
  <%= attribute.name %>: <%= attribute.default.inspect %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
9
9
  <% end -%>
10
- <%= output_attributes.empty? ? "" : " ))\n" -%>
10
+ <%= " )\n" unless output_attributes.empty? -%>
11
+ }
12
+
13
+ before(:each) do
14
+ assign(:<%= ns_file_name %>, <%= ns_file_name %>)
11
15
  end
12
16
 
13
17
  it "renders the edit <%= ns_file_name %> form" do
14
18
  render
15
19
 
16
- assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%= ns_file_name %>), "post" do
20
+ assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(<%= ns_file_name %>), "post" do
17
21
  <% for attribute in output_attributes -%>
18
22
  <%- name = attribute.respond_to?(:column_name) ? attribute.column_name : attribute.name %>
19
23
  assert_select "<%= attribute.input_type -%>[name=?]", "<%= ns_file_name %>[<%= name %>]"
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  <% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
4
4
  RSpec.describe "<%= ns_table_name %>/show", <%= type_metatag(:view) %> do
5
5
  before(:each) do
6
- @<%= ns_file_name %> = assign(:<%= ns_file_name %>, <%= class_name %>.create!(<%= '))' if output_attributes.empty? %>
6
+ assign(:<%= ns_file_name %>, <%= class_name %>.create!(<%= '))' if output_attributes.empty? %>
7
7
  <% output_attributes.each_with_index do |attribute, attribute_index| -%>
8
8
  <%= attribute.name %>: <%= value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
9
9
  <% end -%>
@@ -9,7 +9,7 @@ module Rspec
9
9
  def generate_system_spec
10
10
  return unless options[:system_specs]
11
11
 
12
- template template_name, File.join('spec/system', class_path, filename)
12
+ template template_name, target_path('system', class_path, filename)
13
13
  end
14
14
 
15
15
  def template_name
@@ -9,12 +9,12 @@ module Rspec
9
9
  class_option :template_engine, desc: "Template engine to generate view files"
10
10
 
11
11
  def create_view_specs
12
- empty_directory File.join("spec", "views", file_path)
12
+ empty_directory target_path("views", file_path)
13
13
 
14
14
  actions.each do |action|
15
15
  @action = action
16
16
  template 'view_spec.rb',
17
- File.join("spec", "views", file_path, "#{@action}.html.#{options[:template_engine]}_spec.rb")
17
+ target_path("views", file_path, "#{@action}.html.#{options[:template_engine]}_spec.rb")
18
18
  end
19
19
  end
20
20
  end
@@ -1,8 +1,9 @@
1
1
  require 'rails/generators/named_base'
2
+ require 'rspec/core'
2
3
  require 'rspec/rails/feature_check'
3
4
 
4
5
  # @private
5
- # Weirdly named generators namespace (should be `RSpec`) for compatability with
6
+ # Weirdly named generators namespace (should be `RSpec`) for compatibility with
6
7
  # rails loading.
7
8
  module Rspec
8
9
  # @private
@@ -18,6 +19,22 @@ module Rspec
18
19
  @_rspec_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'rspec', generator_name, 'templates'))
19
20
  end
20
21
  end
22
+
23
+ # @private
24
+ # Load configuration from RSpec to ensure `--default-path` is set
25
+ def self.configuration
26
+ @configuration ||=
27
+ begin
28
+ configuration = RSpec.configuration
29
+ options = RSpec::Core::ConfigurationOptions.new({})
30
+ options.configure(configuration)
31
+ configuration
32
+ end
33
+ end
34
+
35
+ def target_path(*paths)
36
+ File.join(self.class.configuration.default_path, *paths)
37
+ end
21
38
  end
22
39
  end
23
40
  end
@@ -181,5 +181,15 @@ module RSpec
181
181
  #
182
182
  # @private
183
183
  TestUnitAssertionAdapter = MinitestAssertionAdapter
184
+
185
+ # @private
186
+ module TaggedLoggingAdapter
187
+ require 'active_support/testing/tagged_logging'
188
+ include ActiveSupport::Testing::TaggedLogging
189
+
190
+ # Just a stub as TaggedLogging is calling `name`
191
+ def name
192
+ end
193
+ end
184
194
  end
185
195
  end
@@ -26,18 +26,19 @@ module RSpec
26
26
  #
27
27
  # @api private
28
28
  DIRECTORY_MAPPINGS = {
29
- channel: %w[spec channels],
29
+ channel: %w[spec channels],
30
30
  controller: %w[spec controllers],
31
- helper: %w[spec helpers],
32
- job: %w[spec jobs],
33
- mailer: %w[spec mailers],
34
- model: %w[spec models],
35
- request: %w[spec (requests|integration|api)],
36
- routing: %w[spec routing],
37
- view: %w[spec views],
38
- feature: %w[spec features],
39
- system: %w[spec system],
40
- mailbox: %w[spec mailboxes]
31
+ generator: %w[spec generator],
32
+ helper: %w[spec helpers],
33
+ job: %w[spec jobs],
34
+ mailer: %w[spec mailers],
35
+ model: %w[spec models],
36
+ request: %w[spec (requests|integration|api)],
37
+ routing: %w[spec routing],
38
+ view: %w[spec views],
39
+ feature: %w[spec features],
40
+ system: %w[spec system],
41
+ mailbox: %w[spec mailboxes]
41
42
  }
42
43
 
43
44
  # Sets up the different example group modules for the different spec types
@@ -12,6 +12,7 @@ module RSpec
12
12
  include RSpec::Rails::MinitestLifecycleAdapter
13
13
  include RSpec::Rails::MinitestAssertionAdapter
14
14
  include RSpec::Rails::FixtureSupport
15
+ include RSpec::Rails::TaggedLoggingAdapter if ::Rails::VERSION::MAJOR >= 7
15
16
  end
16
17
  end
17
18
  end
@@ -54,23 +54,22 @@ module RSpec
54
54
  ActionDispatch::SystemTesting::Server.silence_puma = true
55
55
  end
56
56
 
57
+ require 'action_dispatch/system_test_case'
58
+
57
59
  begin
58
60
  require 'capybara'
59
- require 'action_dispatch/system_test_case'
60
61
  rescue LoadError => e
61
62
  abort """
62
63
  LoadError: #{e.message}
63
- System test integration requires Rails >= 5.1 and has a hard
64
+ System test integration has a hard
64
65
  dependency on a webserver and `capybara`, please add capybara to
65
66
  your Gemfile and configure a webserver (e.g. `Capybara.server =
66
- :webrick`) before attempting to use system specs.
67
+ :puma`) before attempting to use system specs.
67
68
  """.gsub(/\s+/, ' ').strip
68
69
  end
69
70
 
70
- if ::Rails::VERSION::STRING >= '6.0'
71
- original_before_teardown =
72
- ::ActionDispatch::SystemTesting::TestHelpers::SetupAndTeardown.instance_method(:before_teardown)
73
- end
71
+ original_before_teardown =
72
+ ::ActionDispatch::SystemTesting::TestHelpers::SetupAndTeardown.instance_method(:before_teardown)
74
73
 
75
74
  original_after_teardown =
76
75
  ::ActionDispatch::SystemTesting::TestHelpers::SetupAndTeardown.instance_method(:after_teardown)
@@ -108,10 +107,7 @@ module RSpec
108
107
  orig_stdout = $stdout
109
108
  $stdout = StringIO.new
110
109
  begin
111
- if ::Rails::VERSION::STRING >= '6.0'
112
- original_before_teardown.bind(self).call
113
- end
114
- original_after_teardown.bind(self).call
110
+ original_before_teardown.bind(self).call
115
111
  ensure
116
112
  myio = $stdout
117
113
  myio.rewind
@@ -119,6 +115,11 @@ module RSpec
119
115
  $stdout = orig_stdout
120
116
  end
121
117
  end
118
+
119
+ around do |example|
120
+ example.run
121
+ original_after_teardown.bind(self).call
122
+ end
122
123
  end
123
124
  end
124
125
  end
@@ -149,7 +149,7 @@ module RSpec
149
149
  # the original string.
150
150
  match = path_regex.match(_default_file_to_render)
151
151
 
152
- render_options = {template: match[:template]}
152
+ render_options = { template: match[:template] }
153
153
  render_options[:handlers] = [match[:handler].to_sym] if match[:handler]
154
154
  render_options[:formats] = [match[:format].to_sym] if match[:format]
155
155
  render_options[:locales] = [match[:locale].to_sym] if match[:locale]
@@ -24,7 +24,7 @@ module RSpec
24
24
  end
25
25
 
26
26
  def has_action_cable_testing?
27
- defined?(::ActionCable) && ActionCable::VERSION::MAJOR >= 6
27
+ defined?(::ActionCable)
28
28
  end
29
29
 
30
30
  def has_action_mailer_parameterized?
@@ -6,41 +6,24 @@ module RSpec
6
6
 
7
7
  private
8
8
 
9
- # In Rails 6.2 fixture file path needs to be relative to `file_fixture_path` instead, this change
10
- # was brought in with a deprecation warning on 6.1. In Rails 6.2 expect to rework this to remove
9
+ # In Rails 7.0 fixture file path needs to be relative to `file_fixture_path` instead, this change
10
+ # was brought in with a deprecation warning on 6.1. In Rails 7.0 expect to rework this to remove
11
11
  # the old accessor.
12
- if ::Rails.version.to_f >= 6.1
13
- def rails_fixture_file_wrapper
14
- RailsFixtureFileWrapper.file_fixture_path = nil
15
- resolved_fixture_path =
16
- if respond_to?(:file_fixture_path) && !file_fixture_path.nil?
17
- file_fixture_path.to_s
18
- else
19
- (RSpec.configuration.fixture_path || '').to_s
20
- end
21
- RailsFixtureFileWrapper.file_fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
22
- RailsFixtureFileWrapper.instance
23
- end
24
- else
25
- def rails_fixture_file_wrapper
26
- RailsFixtureFileWrapper.fixture_path = nil
27
- resolved_fixture_path =
28
- if respond_to?(:fixture_path) && !fixture_path.nil?
29
- fixture_path.to_s
30
- else
31
- (RSpec.configuration.fixture_path || '').to_s
32
- end
33
- RailsFixtureFileWrapper.fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
34
- RailsFixtureFileWrapper.instance
35
- end
12
+ def rails_fixture_file_wrapper
13
+ RailsFixtureFileWrapper.file_fixture_path = nil
14
+ resolved_fixture_path =
15
+ if respond_to?(:file_fixture_path) && !file_fixture_path.nil?
16
+ file_fixture_path.to_s
17
+ else
18
+ (RSpec.configuration.fixture_path || '').to_s
19
+ end
20
+ RailsFixtureFileWrapper.file_fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
21
+ RailsFixtureFileWrapper.instance
36
22
  end
37
23
 
38
24
  class RailsFixtureFileWrapper
39
25
  include ActionDispatch::TestProcess if defined?(ActionDispatch::TestProcess)
40
-
41
- if ::Rails.version.to_f >= 6.1
42
- include ActiveSupport::Testing::FileFixtures
43
- end
26
+ include ActiveSupport::Testing::FileFixtures
44
27
 
45
28
  class << self
46
29
  attr_accessor :fixture_path
@@ -159,7 +159,7 @@ module RSpec
159
159
  def check_channel_presence
160
160
  return if @channel.present? && @channel.respond_to?(:channel_name)
161
161
 
162
- error_msg = "Broadcasting channel can't be infered. Please, specify it with `from_channel`"
162
+ error_msg = "Broadcasting channel can't be inferred. Please, specify it with `from_channel`"
163
163
  raise ArgumentError, error_msg
164
164
  end
165
165
  end
@@ -181,7 +181,7 @@ module RSpec
181
181
  |`Time.current.change(usec: 0)`
182
182
  |
183
183
  |Note: RSpec cannot do this for you because jobs can be scheduled with usec
184
- |precision and we do not know wether it is on purpose or not.
184
+ |precision and we do not know whether it is on purpose or not.
185
185
  |
186
186
  |
187
187
  WARNING
@@ -134,7 +134,7 @@ module RSpec
134
134
  end
135
135
 
136
136
  # Ruby 3.1 changed how params were serialized on Rails 6.1
137
- # so we override the active job implementation and customise it here.
137
+ # so we override the active job implementation and customize it here.
138
138
  def deserialize_arguments(job)
139
139
  args = super
140
140
 
@@ -305,7 +305,7 @@ module RSpec
305
305
 
306
306
  private
307
307
 
308
- # @return [String] formating the expected status and associated code(s)
308
+ # @return [String] formatting the expected status and associated code(s)
309
309
  def type_message
310
310
  @type_message ||= (expected == :error ? "an error" : "a #{expected}") +
311
311
  " status code (#{type_codes})"
@@ -26,7 +26,7 @@ module RSpec
26
26
  path, query = *verb_to_path_map.values.first.split('?')
27
27
  @scope.assert_recognizes(
28
28
  @expected,
29
- {method: verb_to_path_map.keys.first, path: path},
29
+ { method: verb_to_path_map.keys.first, path: path },
30
30
  Rack::Utils.parse_nested_query(query)
31
31
  )
32
32
  end
@@ -115,7 +115,7 @@ module RSpec
115
115
  # Shorthand method for matching this type of route.
116
116
  %w[get post put patch delete options head].each do |method|
117
117
  define_method method do |path|
118
- {method.to_sym => path}
118
+ { method.to_sym => path }
119
119
  end
120
120
  end
121
121
  end
@@ -12,9 +12,7 @@ if defined?(Capybara)
12
12
  RSpec.configure do |c|
13
13
  if defined?(Capybara::DSL)
14
14
  c.include Capybara::DSL, type: :feature
15
- if defined?(ActionPack) && ActionPack::VERSION::STRING >= "5.1"
16
- c.include Capybara::DSL, type: :system
17
- end
15
+ c.include Capybara::DSL, type: :system
18
16
  end
19
17
 
20
18
  if defined?(Capybara::RSpecMatchers)
@@ -3,7 +3,7 @@ module RSpec
3
3
  # Version information for RSpec Rails.
4
4
  module Version
5
5
  # Current version of RSpec Rails, in semantic versioning format.
6
- STRING = '6.0.0.rc1'
6
+ STRING = '6.0.0'
7
7
  end
8
8
  end
9
9
  end
@@ -13,26 +13,8 @@ module RSpec
13
13
  end
14
14
 
15
15
  # Compat-shim for AbstractController::Rendering#view_assigns
16
- #
17
- # _assigns was deprecated in favor of view_assigns after
18
- # Rails-3.0.0 was released. Since we are not able to predict when
19
- # the _assigns/view_assigns patch will be released (I thought it
20
- # would have been in 3.0.1, but 3.0.1 bypassed this change for a
21
- # security fix), this bit ensures that we do the right thing without
22
- # knowing anything about the Rails version we are dealing with.
23
- #
24
- # Once that change _is_ released, this can be changed to something
25
- # that checks for the Rails version when the module is being
26
- # interpreted, as it was before commit dd0095.
27
16
  def view_assigns
28
17
  super.merge(_encapsulated_assigns)
29
- rescue
30
- _assigns
31
- end
32
-
33
- # @private
34
- def _assigns
35
- super.merge(_encapsulated_assigns)
36
18
  end
37
19
 
38
20
  private
@@ -62,14 +62,8 @@ module RSpec
62
62
  end
63
63
  end
64
64
 
65
- if ::Rails::VERSION::STRING >= '6'
66
- def self.template_format(template)
67
- template.format
68
- end
69
- else
70
- def self.template_format(template)
71
- template.formats
72
- end
65
+ def self.template_format(template)
66
+ template.format
73
67
  end
74
68
 
75
69
  # Delegates all methods to the submitted resolver and for all methods
data/lib/rspec-rails.rb CHANGED
@@ -8,11 +8,7 @@ module RSpec
8
8
  class Railtie < ::Rails::Railtie
9
9
  # As of Rails 5.1.0 you can register directories to work with `rake notes`
10
10
  require 'rails/source_annotation_extractor'
11
- if ::Rails::VERSION::STRING >= '6.0'
12
- ::Rails::SourceAnnotationExtractor::Annotation.register_directories("spec")
13
- else
14
- SourceAnnotationExtractor::Annotation.register_directories("spec")
15
- end
11
+ ::Rails::SourceAnnotationExtractor::Annotation.register_directories("spec")
16
12
  generators = config.app_generators
17
13
  generators.integration_tool :rspec
18
14
  generators.test_framework :rspec
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.rc1
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Chelimsky
@@ -44,7 +44,7 @@ cert_chain:
44
44
  ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
45
45
  F3MdtaDehhjC
46
46
  -----END CERTIFICATE-----
47
- date: 2022-04-03 00:00:00.000000000 Z
47
+ date: 2022-10-10 00:00:00.000000000 Z
48
48
  dependencies:
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: actionpack
@@ -176,28 +176,16 @@ dependencies:
176
176
  name: cucumber
177
177
  requirement: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '3.2'
182
- - - "!="
183
- - !ruby/object:Gem::Version
184
- version: 4.0.0
185
- - - "<"
179
+ - - "~>"
186
180
  - !ruby/object:Gem::Version
187
- version: 8.0.0
181
+ version: '7.0'
188
182
  type: :development
189
183
  prerelease: false
190
184
  version_requirements: !ruby/object:Gem::Requirement
191
185
  requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '3.2'
195
- - - "!="
196
- - !ruby/object:Gem::Version
197
- version: 4.0.0
198
- - - "<"
186
+ - - "~>"
199
187
  - !ruby/object:Gem::Version
200
- version: 8.0.0
188
+ version: '7.0'
201
189
  description: rspec-rails is a testing framework for Rails 5+.
202
190
  email: rspec@googlegroups.com
203
191
  executables: []
@@ -228,7 +216,6 @@ files:
228
216
  - lib/generators/rspec/install/install_generator.rb
229
217
  - lib/generators/rspec/install/templates/spec/rails_helper.rb
230
218
  - lib/generators/rspec/integration/integration_generator.rb
231
- - lib/generators/rspec/integration/templates/request_spec.rb
232
219
  - lib/generators/rspec/job/job_generator.rb
233
220
  - lib/generators/rspec/job/templates/job_spec.rb.erb
234
221
  - lib/generators/rspec/mailbox/mailbox_generator.rb
@@ -241,6 +228,7 @@ files:
241
228
  - lib/generators/rspec/model/templates/fixtures.yml
242
229
  - lib/generators/rspec/model/templates/model_spec.rb
243
230
  - lib/generators/rspec/request/request_generator.rb
231
+ - lib/generators/rspec/request/templates/request_spec.rb
244
232
  - lib/generators/rspec/scaffold/scaffold_generator.rb
245
233
  - lib/generators/rspec/scaffold/templates/api_controller_spec.rb
246
234
  - lib/generators/rspec/scaffold/templates/api_request_spec.rb
@@ -308,7 +296,7 @@ licenses:
308
296
  - MIT
309
297
  metadata:
310
298
  bug_tracker_uri: https://github.com/rspec/rspec-rails/issues
311
- changelog_uri: https://github.com/rspec/rspec-rails/blob/v6.0.0.rc1/Changelog.md
299
+ changelog_uri: https://github.com/rspec/rspec-rails/blob/v6.0.0/Changelog.md
312
300
  documentation_uri: https://rspec.info/documentation/
313
301
  mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
314
302
  source_code_uri: https://github.com/rspec/rspec-rails
@@ -324,9 +312,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
312
  version: 2.5.0
325
313
  required_rubygems_version: !ruby/object:Gem::Requirement
326
314
  requirements:
327
- - - ">"
315
+ - - ">="
328
316
  - !ruby/object:Gem::Version
329
- version: 1.3.1
317
+ version: '0'
330
318
  requirements: []
331
319
  rubygems_version: 3.1.6
332
320
  signing_key:
metadata.gz.sig CHANGED
Binary file