rubocop-rspec 1.24.0 → 1.25.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile +1 -2
- data/README.md +7 -4
- data/Rakefile +18 -3
- data/config/default.yml +25 -0
- data/lib/rubocop-rspec.rb +3 -0
- data/lib/rubocop/cop/rspec/be.rb +35 -0
- data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +34 -0
- data/lib/rubocop/cop/rspec/describe_symbol.rb +2 -2
- data/lib/rubocop/cop/rspec/empty_example_group.rb +3 -3
- data/lib/rubocop/cop/rspec/example_without_description.rb +1 -2
- data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +148 -0
- data/lib/rubocop/cop/rspec/factory_bot/dynamic_attribute_defined_statically.rb +1 -3
- data/lib/rubocop/cop/rspec/factory_bot/static_attribute_defined_dynamically.rb +3 -3
- data/lib/rubocop/cop/rspec/instance_variable.rb +2 -2
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -2
- data/lib/rubocop/cop/rspec/nested_groups.rb +6 -3
- data/lib/rubocop/cop/rspec/pending.rb +71 -0
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +11 -13
- data/lib/rubocop/cop/rspec/return_from_stub.rb +9 -16
- data/lib/rubocop/cop/rspec/shared_examples.rb +76 -0
- data/lib/rubocop/cop/rspec_cops.rb +4 -0
- data/lib/rubocop/rspec/example.rb +1 -1
- data/lib/rubocop/rspec/node.rb +19 -0
- data/lib/rubocop/rspec/top_level_describe.rb +3 -6
- data/lib/rubocop/rspec/version.rb +1 -1
- data/rubocop-rspec.gemspec +6 -1
- data/spec/rubocop/cop/rspec/be_spec.rb +33 -0
- data/spec/rubocop/cop/rspec/capybara/feature_methods_spec.rb +75 -18
- data/spec/rubocop/cop/rspec/cop_spec.rb +0 -4
- data/spec/rubocop/cop/rspec/described_class_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/example_without_description_spec.rb +8 -0
- data/spec/rubocop/cop/rspec/factory_bot/create_list_spec.rb +140 -0
- data/spec/rubocop/cop/rspec/factory_bot/dynamic_attribute_defined_statically_spec.rb +11 -1
- data/spec/rubocop/cop/rspec/nested_groups_spec.rb +15 -0
- data/spec/rubocop/cop/rspec/pending_spec.rb +162 -0
- data/spec/rubocop/cop/rspec/predicate_matcher_spec.rb +13 -9
- data/spec/rubocop/cop/rspec/return_from_stub_spec.rb +9 -0
- data/spec/rubocop/cop/rspec/shared_examples_spec.rb +93 -0
- data/spec/spec_helper.rb +1 -1
- metadata +19 -4
@@ -9,7 +9,7 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
9
9
|
context 'when enforced style is `inflected`' do
|
10
10
|
let(:enforced_style) { 'inflected' }
|
11
11
|
|
12
|
-
shared_examples
|
12
|
+
shared_examples 'inflected common' do
|
13
13
|
it 'registers an offense for a predicate method in actual' do
|
14
14
|
expect_offense(<<-RUBY)
|
15
15
|
expect(foo.empty?).to be_truthy
|
@@ -90,6 +90,10 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
90
90
|
'expect(foo.is_a?(Array)).to be_truthy',
|
91
91
|
'expect(foo).to be_a(Array)'
|
92
92
|
|
93
|
+
include_examples 'autocorrect',
|
94
|
+
'expect(foo.instance_of?(Array)).to be_truthy',
|
95
|
+
'expect(foo).to be_an_instance_of(Array)'
|
96
|
+
|
93
97
|
include_examples 'autocorrect',
|
94
98
|
'expect(foo.has_something?).to be_truthy',
|
95
99
|
'expect(foo).to have_something'
|
@@ -148,7 +152,7 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
148
152
|
context 'when strict is true' do
|
149
153
|
let(:strict) { true }
|
150
154
|
|
151
|
-
include_examples
|
155
|
+
include_examples 'inflected common'
|
152
156
|
|
153
157
|
it 'accepts strict checking boolean matcher' do
|
154
158
|
expect_no_offenses(<<-RUBY)
|
@@ -164,7 +168,7 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
164
168
|
context 'when strict is false' do
|
165
169
|
let(:strict) { false }
|
166
170
|
|
167
|
-
include_examples
|
171
|
+
include_examples 'inflected common'
|
168
172
|
|
169
173
|
it 'registers an offense for a predicate method in actual' do
|
170
174
|
expect_offense(<<-RUBY)
|
@@ -205,7 +209,7 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
205
209
|
context 'when enforced style is `explicit`' do
|
206
210
|
let(:enforced_style) { 'explicit' }
|
207
211
|
|
208
|
-
shared_examples
|
212
|
+
shared_examples 'explicit common' do
|
209
213
|
it 'registers an offense for a predicate mather' do
|
210
214
|
expect_offense(<<-RUBY)
|
211
215
|
expect(foo).to be_empty
|
@@ -258,7 +262,7 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
258
262
|
end
|
259
263
|
end
|
260
264
|
|
261
|
-
shared_examples
|
265
|
+
shared_examples 'explicit autocorrect' do |matcher_true, matcher_false|
|
262
266
|
include_examples 'autocorrect',
|
263
267
|
'expect(foo).to be_something',
|
264
268
|
"expect(foo.something?).to #{matcher_true}"
|
@@ -321,15 +325,15 @@ RSpec.describe RuboCop::Cop::RSpec::PredicateMatcher, :config do
|
|
321
325
|
context 'when strict is true' do
|
322
326
|
let(:strict) { true }
|
323
327
|
|
324
|
-
include_examples
|
325
|
-
include_examples
|
328
|
+
include_examples 'explicit common'
|
329
|
+
include_examples 'explicit autocorrect', 'be(true)', 'be(false)'
|
326
330
|
end
|
327
331
|
|
328
332
|
context 'when strict is false' do
|
329
333
|
let(:strict) { false }
|
330
334
|
|
331
|
-
include_examples
|
332
|
-
include_examples
|
335
|
+
include_examples 'explicit common'
|
336
|
+
include_examples 'explicit autocorrect', 'be_truthy', 'be_falsey'
|
333
337
|
end
|
334
338
|
end
|
335
339
|
end
|
@@ -62,6 +62,15 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
62
62
|
RUBY
|
63
63
|
end
|
64
64
|
|
65
|
+
it 'finds nested constants returned from block' do
|
66
|
+
expect_offense(<<-RUBY)
|
67
|
+
it do
|
68
|
+
allow(Foo).to receive(:bar) { {Life::MEANING => 42} }
|
69
|
+
^ Use `and_return` for static values.
|
70
|
+
end
|
71
|
+
RUBY
|
72
|
+
end
|
73
|
+
|
65
74
|
it 'ignores dynamic values returned from block' do
|
66
75
|
expect_no_offenses(<<-RUBY)
|
67
76
|
it do
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RuboCop::Cop::RSpec::SharedExamples do
|
4
|
+
subject(:cop) { described_class.new }
|
5
|
+
|
6
|
+
it 'registers an offense when using symbolic title' do
|
7
|
+
expect_offense(<<-RUBY)
|
8
|
+
it_behaves_like :foo_bar_baz
|
9
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
10
|
+
it_should_behave_like :foo_bar_baz
|
11
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
12
|
+
shared_examples :foo_bar_baz
|
13
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
14
|
+
shared_examples_for :foo_bar_baz
|
15
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
16
|
+
include_examples :foo_bar_baz
|
17
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
18
|
+
include_examples :foo_bar_baz, 'foo', 'bar'
|
19
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
20
|
+
|
21
|
+
shared_examples :foo_bar_baz do |param|
|
22
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
23
|
+
# ...
|
24
|
+
end
|
25
|
+
|
26
|
+
RSpec.shared_examples :foo_bar_baz
|
27
|
+
^^^^^^^^^^^^ Prefer 'foo bar baz' over `:foo_bar_baz` to titleize shared examples.
|
28
|
+
RUBY
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not register an offense when using string title' do
|
32
|
+
expect_no_offenses(<<-RUBY)
|
33
|
+
it_behaves_like 'foo bar baz'
|
34
|
+
it_should_behave_like 'foo bar baz'
|
35
|
+
shared_examples 'foo bar baz'
|
36
|
+
shared_examples_for 'foo bar baz'
|
37
|
+
include_examples 'foo bar baz'
|
38
|
+
include_examples 'foo bar baz', 'foo', 'bar'
|
39
|
+
|
40
|
+
shared_examples 'foo bar baz', 'foo', 'bar' do |param|
|
41
|
+
# ...
|
42
|
+
end
|
43
|
+
RUBY
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'does not register an offense when using Module/Class title' do
|
47
|
+
expect_no_offenses(<<-RUBY)
|
48
|
+
it_behaves_like FooBarBaz
|
49
|
+
it_should_behave_like FooBarBaz
|
50
|
+
shared_examples FooBarBaz
|
51
|
+
shared_examples_for FooBarBaz
|
52
|
+
include_examples FooBarBaz
|
53
|
+
include_examples FooBarBaz, 'foo', 'bar'
|
54
|
+
|
55
|
+
shared_examples FooBarBaz, 'foo', 'bar' do |param|
|
56
|
+
# ...
|
57
|
+
end
|
58
|
+
RUBY
|
59
|
+
end
|
60
|
+
|
61
|
+
include_examples 'autocorrect',
|
62
|
+
'it_behaves_like :foo_bar_baz',
|
63
|
+
"it_behaves_like 'foo bar baz'"
|
64
|
+
include_examples 'autocorrect',
|
65
|
+
'it_should_behave_like :foo_bar_baz',
|
66
|
+
"it_should_behave_like 'foo bar baz'"
|
67
|
+
include_examples 'autocorrect',
|
68
|
+
'shared_examples :foo_bar_baz',
|
69
|
+
"shared_examples 'foo bar baz'"
|
70
|
+
include_examples 'autocorrect',
|
71
|
+
'shared_examples_for :foo_bar_baz',
|
72
|
+
"shared_examples_for 'foo bar baz'"
|
73
|
+
include_examples 'autocorrect',
|
74
|
+
'include_examples :foo_bar_baz',
|
75
|
+
"include_examples 'foo bar baz'"
|
76
|
+
include_examples 'autocorrect',
|
77
|
+
"include_examples :foo_bar_baz, 'foo', 'bar'",
|
78
|
+
"include_examples 'foo bar baz', 'foo', 'bar'"
|
79
|
+
|
80
|
+
bad_code_with_block = <<-RUBY
|
81
|
+
shared_examples :foo_bar_baz, 'foo', 'bar' do |param|
|
82
|
+
# ...
|
83
|
+
end
|
84
|
+
RUBY
|
85
|
+
|
86
|
+
good_code_with_block = <<-RUBY
|
87
|
+
shared_examples 'foo bar baz', 'foo', 'bar' do |param|
|
88
|
+
# ...
|
89
|
+
end
|
90
|
+
RUBY
|
91
|
+
|
92
|
+
include_examples 'autocorrect', bad_code_with_block, good_code_with_block
|
93
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Backus
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-04-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- lib/rubocop/cop/rspec/align_right_let_brace.rb
|
121
121
|
- lib/rubocop/cop/rspec/any_instance.rb
|
122
122
|
- lib/rubocop/cop/rspec/around_block.rb
|
123
|
+
- lib/rubocop/cop/rspec/be.rb
|
123
124
|
- lib/rubocop/cop/rspec/be_eql.rb
|
124
125
|
- lib/rubocop/cop/rspec/before_after_all.rb
|
125
126
|
- lib/rubocop/cop/rspec/capybara/current_path_expectation.rb
|
@@ -140,6 +141,7 @@ files:
|
|
140
141
|
- lib/rubocop/cop/rspec/expect_change.rb
|
141
142
|
- lib/rubocop/cop/rspec/expect_in_hook.rb
|
142
143
|
- lib/rubocop/cop/rspec/expect_output.rb
|
144
|
+
- lib/rubocop/cop/rspec/factory_bot/create_list.rb
|
143
145
|
- lib/rubocop/cop/rspec/factory_bot/dynamic_attribute_defined_statically.rb
|
144
146
|
- lib/rubocop/cop/rspec/factory_bot/static_attribute_defined_dynamically.rb
|
145
147
|
- lib/rubocop/cop/rspec/file_path.rb
|
@@ -164,6 +166,7 @@ files:
|
|
164
166
|
- lib/rubocop/cop/rspec/nested_groups.rb
|
165
167
|
- lib/rubocop/cop/rspec/not_to_not.rb
|
166
168
|
- lib/rubocop/cop/rspec/overwriting_setup.rb
|
169
|
+
- lib/rubocop/cop/rspec/pending.rb
|
167
170
|
- lib/rubocop/cop/rspec/predicate_matcher.rb
|
168
171
|
- lib/rubocop/cop/rspec/rails/http_status.rb
|
169
172
|
- lib/rubocop/cop/rspec/repeated_description.rb
|
@@ -172,6 +175,7 @@ files:
|
|
172
175
|
- lib/rubocop/cop/rspec/scattered_let.rb
|
173
176
|
- lib/rubocop/cop/rspec/scattered_setup.rb
|
174
177
|
- lib/rubocop/cop/rspec/shared_context.rb
|
178
|
+
- lib/rubocop/cop/rspec/shared_examples.rb
|
175
179
|
- lib/rubocop/cop/rspec/single_argument_message_chain.rb
|
176
180
|
- lib/rubocop/cop/rspec/subject_stub.rb
|
177
181
|
- lib/rubocop/cop/rspec/verified_doubles.rb
|
@@ -190,6 +194,7 @@ files:
|
|
190
194
|
- lib/rubocop/rspec/inject.rb
|
191
195
|
- lib/rubocop/rspec/language.rb
|
192
196
|
- lib/rubocop/rspec/language/node_pattern.rb
|
197
|
+
- lib/rubocop/rspec/node.rb
|
193
198
|
- lib/rubocop/rspec/top_level_describe.rb
|
194
199
|
- lib/rubocop/rspec/util.rb
|
195
200
|
- lib/rubocop/rspec/version.rb
|
@@ -203,6 +208,7 @@ files:
|
|
203
208
|
- spec/rubocop/cop/rspec/any_instance_spec.rb
|
204
209
|
- spec/rubocop/cop/rspec/around_block_spec.rb
|
205
210
|
- spec/rubocop/cop/rspec/be_eql_spec.rb
|
211
|
+
- spec/rubocop/cop/rspec/be_spec.rb
|
206
212
|
- spec/rubocop/cop/rspec/before_after_all_spec.rb
|
207
213
|
- spec/rubocop/cop/rspec/capybara/current_path_expectation_spec.rb
|
208
214
|
- spec/rubocop/cop/rspec/capybara/feature_methods_spec.rb
|
@@ -222,6 +228,7 @@ files:
|
|
222
228
|
- spec/rubocop/cop/rspec/expect_change_spec.rb
|
223
229
|
- spec/rubocop/cop/rspec/expect_in_hook_spec.rb
|
224
230
|
- spec/rubocop/cop/rspec/expect_output_spec.rb
|
231
|
+
- spec/rubocop/cop/rspec/factory_bot/create_list_spec.rb
|
225
232
|
- spec/rubocop/cop/rspec/factory_bot/dynamic_attribute_defined_statically_spec.rb
|
226
233
|
- spec/rubocop/cop/rspec/factory_bot/static_attribute_defined_dynamically_spec.rb
|
227
234
|
- spec/rubocop/cop/rspec/file_path_spec.rb
|
@@ -246,6 +253,7 @@ files:
|
|
246
253
|
- spec/rubocop/cop/rspec/nested_groups_spec.rb
|
247
254
|
- spec/rubocop/cop/rspec/not_to_not_spec.rb
|
248
255
|
- spec/rubocop/cop/rspec/overwriting_setup_spec.rb
|
256
|
+
- spec/rubocop/cop/rspec/pending_spec.rb
|
249
257
|
- spec/rubocop/cop/rspec/predicate_matcher_spec.rb
|
250
258
|
- spec/rubocop/cop/rspec/rails/http_status_spec.rb
|
251
259
|
- spec/rubocop/cop/rspec/repeated_description_spec.rb
|
@@ -254,6 +262,7 @@ files:
|
|
254
262
|
- spec/rubocop/cop/rspec/scattered_let_spec.rb
|
255
263
|
- spec/rubocop/cop/rspec/scattered_setup_spec.rb
|
256
264
|
- spec/rubocop/cop/rspec/shared_context_spec.rb
|
265
|
+
- spec/rubocop/cop/rspec/shared_examples_spec.rb
|
257
266
|
- spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb
|
258
267
|
- spec/rubocop/cop/rspec/subject_stub_spec.rb
|
259
268
|
- spec/rubocop/cop/rspec/verified_doubles_spec.rb
|
@@ -270,10 +279,12 @@ files:
|
|
270
279
|
- spec/shared/detects_style_behavior.rb
|
271
280
|
- spec/spec_helper.rb
|
272
281
|
- spec/support/expect_offense.rb
|
273
|
-
homepage:
|
282
|
+
homepage: https://github.com/rubocop-rspec/rubocop-rspec
|
274
283
|
licenses:
|
275
284
|
- MIT
|
276
|
-
metadata:
|
285
|
+
metadata:
|
286
|
+
changelog_uri: https://github.com/rubocop-rspec/rubocop-rspec/blob/master/CHANGELOG.md
|
287
|
+
documentation_uri: https://rubocop-rspec.readthedocs.io/
|
277
288
|
post_install_message:
|
278
289
|
rdoc_options: []
|
279
290
|
require_paths:
|
@@ -303,6 +314,7 @@ test_files:
|
|
303
314
|
- spec/rubocop/cop/rspec/any_instance_spec.rb
|
304
315
|
- spec/rubocop/cop/rspec/around_block_spec.rb
|
305
316
|
- spec/rubocop/cop/rspec/be_eql_spec.rb
|
317
|
+
- spec/rubocop/cop/rspec/be_spec.rb
|
306
318
|
- spec/rubocop/cop/rspec/before_after_all_spec.rb
|
307
319
|
- spec/rubocop/cop/rspec/capybara/current_path_expectation_spec.rb
|
308
320
|
- spec/rubocop/cop/rspec/capybara/feature_methods_spec.rb
|
@@ -322,6 +334,7 @@ test_files:
|
|
322
334
|
- spec/rubocop/cop/rspec/expect_change_spec.rb
|
323
335
|
- spec/rubocop/cop/rspec/expect_in_hook_spec.rb
|
324
336
|
- spec/rubocop/cop/rspec/expect_output_spec.rb
|
337
|
+
- spec/rubocop/cop/rspec/factory_bot/create_list_spec.rb
|
325
338
|
- spec/rubocop/cop/rspec/factory_bot/dynamic_attribute_defined_statically_spec.rb
|
326
339
|
- spec/rubocop/cop/rspec/factory_bot/static_attribute_defined_dynamically_spec.rb
|
327
340
|
- spec/rubocop/cop/rspec/file_path_spec.rb
|
@@ -346,6 +359,7 @@ test_files:
|
|
346
359
|
- spec/rubocop/cop/rspec/nested_groups_spec.rb
|
347
360
|
- spec/rubocop/cop/rspec/not_to_not_spec.rb
|
348
361
|
- spec/rubocop/cop/rspec/overwriting_setup_spec.rb
|
362
|
+
- spec/rubocop/cop/rspec/pending_spec.rb
|
349
363
|
- spec/rubocop/cop/rspec/predicate_matcher_spec.rb
|
350
364
|
- spec/rubocop/cop/rspec/rails/http_status_spec.rb
|
351
365
|
- spec/rubocop/cop/rspec/repeated_description_spec.rb
|
@@ -354,6 +368,7 @@ test_files:
|
|
354
368
|
- spec/rubocop/cop/rspec/scattered_let_spec.rb
|
355
369
|
- spec/rubocop/cop/rspec/scattered_setup_spec.rb
|
356
370
|
- spec/rubocop/cop/rspec/shared_context_spec.rb
|
371
|
+
- spec/rubocop/cop/rspec/shared_examples_spec.rb
|
357
372
|
- spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb
|
358
373
|
- spec/rubocop/cop/rspec/subject_stub_spec.rb
|
359
374
|
- spec/rubocop/cop/rspec/verified_doubles_spec.rb
|