rubocop-rspec 1.32.0 → 1.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/Gemfile +2 -0
- data/Rakefile +2 -0
- data/config/default.yml +6 -0
- data/lib/rubocop-rspec.rb +3 -0
- data/lib/rubocop/cop/rspec/align_left_let_brace.rb +1 -1
- data/lib/rubocop/cop/rspec/align_right_let_brace.rb +1 -1
- data/lib/rubocop/cop/rspec/any_instance.rb +3 -1
- data/lib/rubocop/cop/rspec/around_block.rb +4 -2
- data/lib/rubocop/cop/rspec/be.rb +4 -2
- data/lib/rubocop/cop/rspec/be_eql.rb +3 -1
- data/lib/rubocop/cop/rspec/before_after_all.rb +1 -1
- data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +5 -3
- data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +3 -3
- data/lib/rubocop/cop/rspec/context_wording.rb +2 -2
- data/lib/rubocop/cop/rspec/describe_class.rb +4 -4
- data/lib/rubocop/cop/rspec/describe_method.rb +2 -2
- data/lib/rubocop/cop/rspec/describe_symbol.rb +2 -2
- data/lib/rubocop/cop/rspec/described_class.rb +3 -3
- data/lib/rubocop/cop/rspec/dialect.rb +76 -0
- data/lib/rubocop/cop/rspec/empty_example_group.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_example_group.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_final_let.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_subject.rb +1 -1
- data/lib/rubocop/cop/rspec/example_length.rb +1 -1
- data/lib/rubocop/cop/rspec/example_without_description.rb +2 -2
- data/lib/rubocop/cop/rspec/example_wording.rb +2 -2
- data/lib/rubocop/cop/rspec/expect_actual.rb +1 -1
- data/lib/rubocop/cop/rspec/expect_change.rb +2 -2
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/expect_output.rb +1 -1
- data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +21 -40
- data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +2 -2
- data/lib/rubocop/cop/rspec/file_path.rb +2 -2
- data/lib/rubocop/cop/rspec/focus.rb +3 -3
- data/lib/rubocop/cop/rspec/hook_argument.rb +4 -6
- data/lib/rubocop/cop/rspec/hooks_before_examples.rb +2 -5
- data/lib/rubocop/cop/rspec/implicit_expect.rb +2 -2
- data/lib/rubocop/cop/rspec/implicit_subject.rb +1 -1
- data/lib/rubocop/cop/rspec/instance_spy.rb +1 -1
- data/lib/rubocop/cop/rspec/instance_variable.rb +1 -1
- data/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb +4 -2
- data/lib/rubocop/cop/rspec/it_behaves_like.rb +1 -1
- data/lib/rubocop/cop/rspec/iterated_expectation.rb +3 -1
- data/lib/rubocop/cop/rspec/leading_subject.rb +1 -2
- data/lib/rubocop/cop/rspec/let_before_examples.rb +2 -5
- data/lib/rubocop/cop/rspec/let_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/message_chain.rb +3 -1
- data/lib/rubocop/cop/rspec/message_expectation.rb +1 -1
- data/lib/rubocop/cop/rspec/message_spies.rb +3 -4
- data/lib/rubocop/cop/rspec/missing_example_group_argument.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_subjects.rb +6 -2
- data/lib/rubocop/cop/rspec/named_subject.rb +1 -1
- data/lib/rubocop/cop/rspec/nested_groups.rb +3 -4
- data/lib/rubocop/cop/rspec/not_to_not.rb +3 -1
- data/lib/rubocop/cop/rspec/overwriting_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/pending.rb +3 -3
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +17 -14
- data/lib/rubocop/cop/rspec/rails/http_status.rb +2 -2
- data/lib/rubocop/cop/rspec/receive_counts.rb +5 -6
- data/lib/rubocop/cop/rspec/receive_never.rb +4 -7
- data/lib/rubocop/cop/rspec/repeated_description.rb +3 -1
- data/lib/rubocop/cop/rspec/repeated_example.rb +3 -1
- data/lib/rubocop/cop/rspec/return_from_stub.rb +2 -2
- data/lib/rubocop/cop/rspec/scattered_let.rb +1 -1
- data/lib/rubocop/cop/rspec/scattered_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/shared_context.rb +2 -2
- data/lib/rubocop/cop/rspec/shared_examples.rb +7 -7
- data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +3 -1
- data/lib/rubocop/cop/rspec/subject_stub.rb +1 -1
- data/lib/rubocop/cop/rspec/unspecified_exception.rb +5 -3
- data/lib/rubocop/cop/rspec/verified_doubles.rb +2 -2
- data/lib/rubocop/cop/rspec/void_expect.rb +1 -1
- data/lib/rubocop/cop/rspec/yield.rb +2 -4
- data/lib/rubocop/cop/rspec_cops.rb +3 -0
- data/lib/rubocop/rspec.rb +2 -0
- data/lib/rubocop/rspec/blank_line_separation.rb +3 -1
- data/lib/rubocop/rspec/config_formatter.rb +3 -1
- data/lib/rubocop/rspec/description_extractor.rb +3 -1
- data/lib/rubocop/rspec/factory_bot.rb +58 -0
- data/lib/rubocop/rspec/final_end_location.rb +2 -0
- data/lib/rubocop/rspec/inject.rb +2 -0
- data/lib/rubocop/rspec/language.rb +9 -2
- data/lib/rubocop/rspec/top_level_describe.rb +2 -0
- data/lib/rubocop/rspec/version.rb +1 -1
- data/rubocop-rspec.gemspec +3 -1
- data/spec/project/changelog_spec.rb +2 -0
- data/spec/project/default_config_spec.rb +2 -0
- data/spec/project/project_requires_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/align_left_let_brace_spec.rb +22 -37
- data/spec/rubocop/cop/rspec/align_right_let_brace_spec.rb +21 -36
- data/spec/rubocop/cop/rspec/any_instance_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/around_block_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/be_eql_spec.rb +25 -4
- data/spec/rubocop/cop/rspec/be_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/before_after_all_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/capybara/current_path_expectation_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/capybara/feature_methods_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/context_wording_spec.rb +32 -0
- data/spec/rubocop/cop/rspec/describe_class_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/describe_method_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/describe_symbol_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/described_class_spec.rb +4 -1
- data/spec/rubocop/cop/rspec/dialect_spec.rb +78 -0
- data/spec/rubocop/cop/rspec/empty_line_after_example_group_spec.rb +40 -21
- data/spec/rubocop/cop/rspec/empty_line_after_final_let_spec.rb +77 -69
- data/spec/rubocop/cop/rspec/empty_line_after_hook_spec.rb +24 -19
- data/spec/rubocop/cop/rspec/empty_line_after_subject_spec.rb +16 -19
- data/spec/rubocop/cop/rspec/example_length_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/example_without_description_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/example_wording_spec.rb +45 -24
- data/spec/rubocop/cop/rspec/expect_change_spec.rb +22 -14
- data/spec/rubocop/cop/rspec/factory_bot/attribute_defined_statically_spec.rb +36 -0
- data/spec/rubocop/cop/rspec/factory_bot/create_list_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/file_path_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/focus_spec.rb +2 -2
- data/spec/rubocop/cop/rspec/hook_argument_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/hooks_before_examples_spec.rb +47 -32
- data/spec/rubocop/cop/rspec/implicit_expect_spec.rb +20 -19
- data/spec/rubocop/cop/rspec/implicit_subject_spec.rb +56 -68
- data/spec/rubocop/cop/rspec/instance_spy_spec.rb +16 -15
- data/spec/rubocop/cop/rspec/instance_variable_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/invalid_predicate_matcher_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/it_behaves_like_spec.rb +10 -12
- data/spec/rubocop/cop/rspec/iterated_expectation_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/leading_subject_spec.rb +31 -47
- data/spec/rubocop/cop/rspec/let_before_examples_spec.rb +27 -26
- data/spec/rubocop/cop/rspec/message_chain_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/missing_example_group_argument_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/multiple_describes_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/multiple_subjects_spec.rb +24 -37
- data/spec/rubocop/cop/rspec/not_to_not_spec.rb +22 -32
- data/spec/rubocop/cop/rspec/overwriting_setup_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/pending_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/predicate_matcher_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/receive_counts_spec.rb +47 -8
- data/spec/rubocop/cop/rspec/receive_never_spec.rb +16 -4
- data/spec/rubocop/cop/rspec/return_from_stub_spec.rb +95 -72
- data/spec/rubocop/cop/rspec/scattered_let_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/scattered_setup_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/shared_context_spec.rb +29 -34
- data/spec/rubocop/cop/rspec/shared_examples_spec.rb +16 -34
- data/spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb +44 -48
- data/spec/rubocop/cop/rspec/unspecified_exception_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/verified_doubles_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/void_expect_spec.rb +2 -0
- data/spec/rubocop/cop/rspec/yield_spec.rb +22 -21
- data/spec/rubocop/rspec/config_formatter_spec.rb +2 -0
- data/spec/rubocop/rspec/description_extractor_spec.rb +2 -0
- data/spec/rubocop/rspec/language/selector_set_spec.rb +2 -0
- data/spec/rubocop/rspec/util/one_spec.rb +2 -0
- data/spec/rubocop/rspec/wording_spec.rb +2 -0
- data/spec/shared/autocorrect_behavior.rb +2 -0
- data/spec/shared/detects_style_behavior.rb +2 -0
- data/spec/shared/smoke_test_examples.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/expect_offense.rb +3 -1
- metadata +8 -4
@@ -13,6 +13,10 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
13
13
|
it { should be_truthy }
|
14
14
|
^^^^^^ Prefer `is_expected.to` over `should`.
|
15
15
|
RUBY
|
16
|
+
|
17
|
+
expect_correction(<<-RUBY)
|
18
|
+
it { is_expected.to be_truthy }
|
19
|
+
RUBY
|
16
20
|
end
|
17
21
|
|
18
22
|
it 'flags it { should_not }' do
|
@@ -20,6 +24,10 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
20
24
|
it { should_not be_truthy }
|
21
25
|
^^^^^^^^^^ Prefer `is_expected.to_not` over `should_not`.
|
22
26
|
RUBY
|
27
|
+
|
28
|
+
expect_correction(<<-RUBY)
|
29
|
+
it { is_expected.to_not be_truthy }
|
30
|
+
RUBY
|
23
31
|
end
|
24
32
|
|
25
33
|
it 'approves of is_expected.to' do
|
@@ -35,13 +43,6 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
35
43
|
end
|
36
44
|
|
37
45
|
include_examples 'detects style', 'it { should be_truthy }', 'should'
|
38
|
-
include_examples 'autocorrect',
|
39
|
-
'it { should be_truthy }',
|
40
|
-
'it { is_expected.to be_truthy }'
|
41
|
-
|
42
|
-
include_examples 'autocorrect',
|
43
|
-
'it { should_not be_truthy }',
|
44
|
-
'it { is_expected.to_not be_truthy }'
|
45
46
|
end
|
46
47
|
|
47
48
|
context 'when EnforcedStyle is should' do
|
@@ -54,6 +55,10 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
54
55
|
it { is_expected.to be_truthy }
|
55
56
|
^^^^^^^^^^^^^^ Prefer `should` over `is_expected.to`.
|
56
57
|
RUBY
|
58
|
+
|
59
|
+
expect_correction(<<-RUBY)
|
60
|
+
it { should be_truthy }
|
61
|
+
RUBY
|
57
62
|
end
|
58
63
|
|
59
64
|
it 'flags it { is_expected.to_not }' do
|
@@ -61,6 +66,10 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
61
66
|
it { is_expected.to_not be_truthy }
|
62
67
|
^^^^^^^^^^^^^^^^^^ Prefer `should_not` over `is_expected.to_not`.
|
63
68
|
RUBY
|
69
|
+
|
70
|
+
expect_correction(<<-RUBY)
|
71
|
+
it { should_not be_truthy }
|
72
|
+
RUBY
|
64
73
|
end
|
65
74
|
|
66
75
|
it 'flags it { is_expected.not_to }' do
|
@@ -68,6 +77,10 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
68
77
|
it { is_expected.not_to be_truthy }
|
69
78
|
^^^^^^^^^^^^^^^^^^ Prefer `should_not` over `is_expected.not_to`.
|
70
79
|
RUBY
|
80
|
+
|
81
|
+
expect_correction(<<-RUBY)
|
82
|
+
it { should_not be_truthy }
|
83
|
+
RUBY
|
71
84
|
end
|
72
85
|
|
73
86
|
it 'approves of should' do
|
@@ -85,17 +98,5 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitExpect, :config do
|
|
85
98
|
include_examples 'detects style',
|
86
99
|
'it { should be_truthy }',
|
87
100
|
'should'
|
88
|
-
|
89
|
-
include_examples 'autocorrect',
|
90
|
-
'it { is_expected.to be_truthy }',
|
91
|
-
'it { should be_truthy }'
|
92
|
-
|
93
|
-
include_examples 'autocorrect',
|
94
|
-
'it { is_expected.to_not be_truthy }',
|
95
|
-
'it { should_not be_truthy }'
|
96
|
-
|
97
|
-
include_examples 'autocorrect',
|
98
|
-
'it { is_expected.not_to be_truthy }',
|
99
|
-
'it { should_not be_truthy }'
|
100
101
|
end
|
101
102
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
2
4
|
subject(:cop) { described_class.new(config) }
|
3
5
|
|
@@ -15,6 +17,12 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
15
17
|
^^^^^^^^^^^ Don't use implicit subject.
|
16
18
|
end
|
17
19
|
RUBY
|
20
|
+
|
21
|
+
expect_correction(<<-RUBY)
|
22
|
+
it 'expect subject to be used' do
|
23
|
+
expect(subject).to be_good
|
24
|
+
end
|
25
|
+
RUBY
|
18
26
|
end
|
19
27
|
|
20
28
|
it 'allows `is_expected` inside `its` block, in multi-line examples' do
|
@@ -30,6 +38,15 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
30
38
|
it 'expect subject to be used' do
|
31
39
|
should be_good
|
32
40
|
^^^^^^^^^^^^^^ Don't use implicit subject.
|
41
|
+
should_not be_bad
|
42
|
+
^^^^^^^^^^^^^^^^^ Don't use implicit subject.
|
43
|
+
end
|
44
|
+
RUBY
|
45
|
+
|
46
|
+
expect_correction(<<-RUBY)
|
47
|
+
it 'expect subject to be used' do
|
48
|
+
expect(subject).to be_good
|
49
|
+
expect(subject).not_to be_bad
|
33
50
|
end
|
34
51
|
RUBY
|
35
52
|
end
|
@@ -63,41 +80,13 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
63
80
|
^^^^^^^^^^^ Don't use implicit subject.
|
64
81
|
end
|
65
82
|
RUBY
|
66
|
-
end
|
67
83
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
good_code = <<-RUBY
|
75
|
-
it 'works' do
|
76
|
-
expect(subject).to be_truthy
|
77
|
-
end
|
78
|
-
RUBY
|
79
|
-
|
80
|
-
include_examples 'autocorrect',
|
81
|
-
bad_code,
|
82
|
-
good_code
|
83
|
-
|
84
|
-
bad_code = <<-RUBY
|
85
|
-
it 'works' do
|
86
|
-
should be_truthy
|
87
|
-
should_not be_falsy
|
88
|
-
end
|
89
|
-
RUBY
|
90
|
-
|
91
|
-
good_code = <<-RUBY
|
92
|
-
it 'works' do
|
93
|
-
expect(subject).to be_truthy
|
94
|
-
expect(subject).not_to be_falsy
|
95
|
-
end
|
96
|
-
RUBY
|
97
|
-
|
98
|
-
include_examples 'autocorrect',
|
99
|
-
bad_code,
|
100
|
-
good_code
|
84
|
+
expect_correction(<<-RUBY)
|
85
|
+
def permits(actions)
|
86
|
+
actions.each { |action| expect(subject).to permit_action(action) }
|
87
|
+
end
|
88
|
+
RUBY
|
89
|
+
end
|
101
90
|
end
|
102
91
|
|
103
92
|
context 'with EnforcedStyle `single_statement_only`' do
|
@@ -119,29 +108,14 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
119
108
|
^^^^^^^^^^^ Don't use implicit subject.
|
120
109
|
end
|
121
110
|
RUBY
|
122
|
-
end
|
123
111
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
good_code = <<-RUBY
|
132
|
-
it 'is valid' do
|
133
|
-
subject.age = 18
|
134
|
-
expect(subject).to be_valid
|
135
|
-
end
|
136
|
-
RUBY
|
137
|
-
|
138
|
-
include_examples 'autocorrect',
|
139
|
-
bad_code,
|
140
|
-
good_code
|
141
|
-
|
142
|
-
include_examples 'autocorrect',
|
143
|
-
bad_code,
|
144
|
-
good_code
|
112
|
+
expect_correction(<<-RUBY)
|
113
|
+
it 'expect subject to be used' do
|
114
|
+
subject.age = 18
|
115
|
+
expect(subject).to be_valid
|
116
|
+
end
|
117
|
+
RUBY
|
118
|
+
end
|
145
119
|
end
|
146
120
|
|
147
121
|
context 'with EnforcedStyle `disallow`' do
|
@@ -154,6 +128,12 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
154
128
|
^^^^^^^^^^^ Don't use implicit subject.
|
155
129
|
end
|
156
130
|
RUBY
|
131
|
+
|
132
|
+
expect_correction(<<-RUBY)
|
133
|
+
it 'expect subject to be used' do
|
134
|
+
expect(subject).to be_good
|
135
|
+
end
|
136
|
+
RUBY
|
157
137
|
end
|
158
138
|
|
159
139
|
it 'flags `is_expected` in single-line examples' do
|
@@ -161,6 +141,10 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
161
141
|
it { is_expected.to be_good }
|
162
142
|
^^^^^^^^^^^ Don't use implicit subject.
|
163
143
|
RUBY
|
144
|
+
|
145
|
+
expect_correction(<<-RUBY)
|
146
|
+
it { expect(subject).to be_good }
|
147
|
+
RUBY
|
164
148
|
end
|
165
149
|
|
166
150
|
it 'flags `should` in multi-line examples' do
|
@@ -168,6 +152,15 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
168
152
|
it 'expect subject to be used' do
|
169
153
|
should be_good
|
170
154
|
^^^^^^^^^^^^^^ Don't use implicit subject.
|
155
|
+
should_not be_bad
|
156
|
+
^^^^^^^^^^^^^^^^^ Don't use implicit subject.
|
157
|
+
end
|
158
|
+
RUBY
|
159
|
+
|
160
|
+
expect_correction(<<-RUBY)
|
161
|
+
it 'expect subject to be used' do
|
162
|
+
expect(subject).to be_good
|
163
|
+
expect(subject).not_to be_bad
|
171
164
|
end
|
172
165
|
RUBY
|
173
166
|
end
|
@@ -176,6 +169,13 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
176
169
|
expect_offense(<<-RUBY)
|
177
170
|
it { should be_good }
|
178
171
|
^^^^^^^^^^^^^^ Don't use implicit subject.
|
172
|
+
it { should_not be_bad }
|
173
|
+
^^^^^^^^^^^^^^^^^ Don't use implicit subject.
|
174
|
+
RUBY
|
175
|
+
|
176
|
+
expect_correction(<<-RUBY)
|
177
|
+
it { expect(subject).to be_good }
|
178
|
+
it { expect(subject).not_to be_bad }
|
179
179
|
RUBY
|
180
180
|
end
|
181
181
|
|
@@ -184,17 +184,5 @@ RSpec.describe RuboCop::Cop::RSpec::ImplicitSubject, :config do
|
|
184
184
|
its(:quality) { is_expected.to be :high }
|
185
185
|
RUBY
|
186
186
|
end
|
187
|
-
|
188
|
-
include_examples 'autocorrect',
|
189
|
-
'it { is_expected.to be_truthy }',
|
190
|
-
'it { expect(subject).to be_truthy }'
|
191
|
-
|
192
|
-
include_examples 'autocorrect',
|
193
|
-
'it { should be_truthy }',
|
194
|
-
'it { expect(subject).to be_truthy }'
|
195
|
-
|
196
|
-
include_examples 'autocorrect',
|
197
|
-
'it { should_not be_truthy }',
|
198
|
-
'it { expect(subject).not_to be_truthy }'
|
199
187
|
end
|
200
188
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RSpec.describe RuboCop::Cop::RSpec::InstanceSpy do
|
2
4
|
subject(:cop) { described_class.new }
|
3
5
|
|
@@ -10,6 +12,13 @@ RSpec.describe RuboCop::Cop::RSpec::InstanceSpy do
|
|
10
12
|
expect(foo).to have_received(:bar)
|
11
13
|
end
|
12
14
|
RUBY
|
15
|
+
|
16
|
+
expect_correction(<<-RUBY)
|
17
|
+
it do
|
18
|
+
foo = instance_spy(Foo)
|
19
|
+
expect(foo).to have_received(:bar)
|
20
|
+
end
|
21
|
+
RUBY
|
13
22
|
end
|
14
23
|
|
15
24
|
it 'adds an offense for an instance_double with multiple arguments' do
|
@@ -20,6 +29,13 @@ RSpec.describe RuboCop::Cop::RSpec::InstanceSpy do
|
|
20
29
|
expect(foo).to have_received(:bar)
|
21
30
|
end
|
22
31
|
RUBY
|
32
|
+
|
33
|
+
expect_correction(<<-RUBY)
|
34
|
+
it do
|
35
|
+
foo = instance_spy(Foo, :name)
|
36
|
+
expect(foo).to have_received(:bar)
|
37
|
+
end
|
38
|
+
RUBY
|
23
39
|
end
|
24
40
|
|
25
41
|
it 'ignores instance_double when it is not used with as_null_object' do
|
@@ -42,19 +58,4 @@ RSpec.describe RuboCop::Cop::RSpec::InstanceSpy do
|
|
42
58
|
RUBY
|
43
59
|
end
|
44
60
|
end
|
45
|
-
|
46
|
-
original = <<-RUBY
|
47
|
-
it do
|
48
|
-
foo = instance_double(Foo, :name).as_null_object
|
49
|
-
expect(foo).to have_received(:bar)
|
50
|
-
end
|
51
|
-
RUBY
|
52
|
-
corrected = <<-RUBY
|
53
|
-
it do
|
54
|
-
foo = instance_spy(Foo, :name)
|
55
|
-
expect(foo).to have_received(:bar)
|
56
|
-
end
|
57
|
-
RUBY
|
58
|
-
|
59
|
-
include_examples 'autocorrect', original, corrected
|
60
61
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RSpec.describe RuboCop::Cop::RSpec::ItBehavesLike, :config do
|
2
4
|
subject(:cop) { described_class.new(config) }
|
3
5
|
|
@@ -13,17 +15,15 @@ RSpec.describe RuboCop::Cop::RSpec::ItBehavesLike, :config do
|
|
13
15
|
it_should_behave_like 'a foo'
|
14
16
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Prefer `it_behaves_like` over `it_should_behave_like` when including examples in a nested context.
|
15
17
|
RUBY
|
18
|
+
|
19
|
+
expect_correction(<<-RUBY)
|
20
|
+
it_behaves_like 'a foo'
|
21
|
+
RUBY
|
16
22
|
end
|
17
23
|
|
18
24
|
it 'does not flag a violation for it_behaves_like' do
|
19
25
|
expect_no_offenses("it_behaves_like 'a foo'")
|
20
26
|
end
|
21
|
-
|
22
|
-
include_examples(
|
23
|
-
'autocorrect',
|
24
|
-
"foo(); it_should_behave_like 'a foo'",
|
25
|
-
"foo(); it_behaves_like 'a foo'"
|
26
|
-
)
|
27
27
|
end
|
28
28
|
|
29
29
|
context 'when the enforced style is `it_should_behave_like`' do
|
@@ -34,16 +34,14 @@ RSpec.describe RuboCop::Cop::RSpec::ItBehavesLike, :config do
|
|
34
34
|
it_behaves_like 'a foo'
|
35
35
|
^^^^^^^^^^^^^^^^^^^^^^^ Prefer `it_should_behave_like` over `it_behaves_like` when including examples in a nested context.
|
36
36
|
RUBY
|
37
|
+
|
38
|
+
expect_correction(<<-RUBY)
|
39
|
+
it_should_behave_like 'a foo'
|
40
|
+
RUBY
|
37
41
|
end
|
38
42
|
|
39
43
|
it 'does not flag a violation for it_behaves_like' do
|
40
44
|
expect_no_offenses("it_should_behave_like 'a foo'")
|
41
45
|
end
|
42
|
-
|
43
|
-
include_examples(
|
44
|
-
'autocorrect',
|
45
|
-
"foo(); it_behaves_like 'a foo'",
|
46
|
-
"foo(); it_should_behave_like 'a foo'"
|
47
|
-
)
|
48
46
|
end
|
49
47
|
end
|
@@ -12,6 +12,14 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
12
12
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Declare `subject` above any other `let` declarations.
|
13
13
|
end
|
14
14
|
RUBY
|
15
|
+
|
16
|
+
expect_correction(<<-RUBY)
|
17
|
+
RSpec.describe User do
|
18
|
+
subject { described_class.new }
|
19
|
+
let(:params) { foo }
|
20
|
+
|
21
|
+
end
|
22
|
+
RUBY
|
15
23
|
end
|
16
24
|
|
17
25
|
it 'checks subject below let!' do
|
@@ -23,6 +31,14 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
23
31
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Declare `subject` above any other `let!` declarations.
|
24
32
|
end
|
25
33
|
RUBY
|
34
|
+
|
35
|
+
expect_correction(<<-RUBY)
|
36
|
+
RSpec.describe User do
|
37
|
+
subject { described_class.new }
|
38
|
+
let!(:params) { foo }
|
39
|
+
|
40
|
+
end
|
41
|
+
RUBY
|
26
42
|
end
|
27
43
|
|
28
44
|
it 'approves of subject above let' do
|
@@ -72,6 +88,14 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
72
88
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Declare `subject` above any other `before` declarations.
|
73
89
|
end
|
74
90
|
RUBY
|
91
|
+
|
92
|
+
expect_correction(<<-RUBY)
|
93
|
+
RSpec.describe User do
|
94
|
+
subject { described_class.new }
|
95
|
+
before { allow(Foo).to receive(:bar) }
|
96
|
+
|
97
|
+
end
|
98
|
+
RUBY
|
75
99
|
end
|
76
100
|
|
77
101
|
it 'checks subject below example' do
|
@@ -83,53 +107,13 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
83
107
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Declare `subject` above any other `it` declarations.
|
84
108
|
end
|
85
109
|
RUBY
|
86
|
-
end
|
87
110
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
let(:bar) { baz }
|
93
|
-
|
94
|
-
subject { described_class.new }
|
95
|
-
it { is_expected.to do_something }
|
96
|
-
end
|
97
|
-
RUBY
|
98
|
-
|
99
|
-
good_code = <<-RUBY
|
100
|
-
RSpec.describe User do
|
101
|
-
subject { described_class.new }
|
102
|
-
before { allow(Foo).to receive(:bar) }
|
103
|
-
let(:params) { foo }
|
104
|
-
let(:bar) { baz }
|
105
|
-
|
106
|
-
it { is_expected.to do_something }
|
107
|
-
end
|
108
|
-
RUBY
|
109
|
-
|
110
|
-
include_examples 'autocorrect', bad_code, good_code
|
111
|
-
|
112
|
-
bad_code = <<-RUBY
|
113
|
-
RSpec.describe User do
|
114
|
-
let(:params) { foo }
|
115
|
-
let(:bar) { baz }
|
116
|
-
subject do
|
117
|
-
described_class.new
|
118
|
-
end
|
119
|
-
it { is_expected.to do_something }
|
120
|
-
end
|
121
|
-
RUBY
|
122
|
-
|
123
|
-
good_code = <<-RUBY
|
124
|
-
RSpec.describe User do
|
125
|
-
subject do
|
126
|
-
described_class.new
|
127
|
-
end
|
128
|
-
let(:params) { foo }
|
129
|
-
let(:bar) { baz }
|
130
|
-
it { is_expected.to do_something }
|
131
|
-
end
|
132
|
-
RUBY
|
111
|
+
expect_correction(<<-RUBY)
|
112
|
+
RSpec.describe User do
|
113
|
+
subject { described_class.new }
|
114
|
+
it { is_expected.to be_present }
|
133
115
|
|
134
|
-
|
116
|
+
end
|
117
|
+
RUBY
|
118
|
+
end
|
135
119
|
end
|