rubocop-rspec 1.15.1 → 1.16.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 +20 -1
- data/Gemfile +0 -1
- data/config/default.yml +105 -0
- data/lib/rubocop-rspec.rb +27 -0
- data/lib/rubocop/cop/rspec/align_left_let_brace.rb +51 -0
- data/lib/rubocop/cop/rspec/align_right_let_brace.rb +51 -0
- data/lib/rubocop/cop/rspec/any_instance.rb +1 -1
- data/lib/rubocop/cop/rspec/cop.rb +4 -2
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +61 -0
- data/lib/rubocop/cop/rspec/factory_girl/dynamic_attribute_defined_statically.rb +84 -0
- data/lib/rubocop/cop/rspec/hook_argument.rb +11 -5
- data/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb +42 -0
- data/lib/rubocop/cop/rspec/let_before_examples.rb +66 -0
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +3 -5
- data/lib/rubocop/cop/rspec/multiple_subjects.rb +80 -0
- data/lib/rubocop/cop/rspec/named_subject.rb +5 -6
- data/lib/rubocop/cop/rspec/overwriting_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +337 -0
- data/lib/rubocop/cop/rspec/return_from_stub.rb +83 -0
- data/lib/rubocop/cop/rspec/void_expect.rb +52 -0
- data/lib/rubocop/rspec/align_let_brace.rb +64 -0
- data/lib/rubocop/rspec/config_formatter.rb +7 -4
- data/lib/rubocop/rspec/description_extractor.rb +2 -2
- data/lib/rubocop/rspec/example_group.rb +25 -2
- data/lib/rubocop/rspec/factory_girl.rb +7 -0
- data/lib/rubocop/rspec/language.rb +6 -1
- data/lib/rubocop/rspec/version.rb +1 -1
- data/rubocop-rspec.gemspec +1 -4
- data/spec/project/default_config_spec.rb +8 -4
- data/spec/rubocop/cop/rspec/align_left_let_brace_spec.rb +62 -0
- data/spec/rubocop/cop/rspec/align_right_let_brace_spec.rb +62 -0
- data/spec/rubocop/cop/rspec/any_instance_spec.rb +3 -3
- data/spec/rubocop/cop/rspec/around_block_spec.rb +11 -11
- data/spec/rubocop/cop/rspec/be_eql_spec.rb +7 -7
- data/spec/rubocop/cop/rspec/before_after_all_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/cop_spec.rb +7 -7
- data/spec/rubocop/cop/rspec/describe_class_spec.rb +18 -18
- data/spec/rubocop/cop/rspec/describe_method_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/describe_symbol_spec.rb +6 -6
- data/spec/rubocop/cop/rspec/described_class_spec.rb +18 -18
- data/spec/rubocop/cop/rspec/empty_example_group_spec.rb +5 -5
- data/spec/rubocop/cop/rspec/empty_line_after_final_let_spec.rb +9 -9
- data/spec/rubocop/cop/rspec/empty_line_after_subject_spec.rb +5 -5
- data/spec/rubocop/cop/rspec/example_length_spec.rb +6 -6
- data/spec/rubocop/cop/rspec/example_wording_spec.rb +10 -10
- data/spec/rubocop/cop/rspec/expect_actual_spec.rb +10 -10
- data/spec/rubocop/cop/rspec/expect_in_hook_spec.rb +79 -0
- data/spec/rubocop/cop/rspec/expect_output_spec.rb +7 -7
- data/spec/rubocop/cop/rspec/factory_girl/dynamic_attribute_defined_statically_spec.rb +87 -0
- data/spec/rubocop/cop/rspec/file_path_spec.rb +29 -29
- data/spec/rubocop/cop/rspec/focus_spec.rb +6 -6
- data/spec/rubocop/cop/rspec/hook_argument_spec.rb +35 -23
- data/spec/rubocop/cop/rspec/implicit_expect_spec.rb +10 -10
- data/spec/rubocop/cop/rspec/instance_spy_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/instance_variable_spec.rb +7 -7
- data/spec/rubocop/cop/rspec/invalid_predicate_matcher_spec.rb +37 -0
- data/spec/rubocop/cop/rspec/it_behaves_like_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/iterated_expectation_spec.rb +8 -8
- data/spec/rubocop/cop/rspec/leading_subject_spec.rb +5 -5
- data/spec/rubocop/cop/rspec/let_before_examples_spec.rb +83 -0
- data/spec/rubocop/cop/rspec/let_setup_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/message_chain_spec.rb +2 -2
- data/spec/rubocop/cop/rspec/message_expectation_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/message_spies_spec.rb +18 -18
- data/spec/rubocop/cop/rspec/multiple_describes_spec.rb +3 -3
- data/spec/rubocop/cop/rspec/multiple_expectations_spec.rb +45 -9
- data/spec/rubocop/cop/rspec/multiple_subjects_spec.rb +96 -0
- data/spec/rubocop/cop/rspec/named_subject_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/nested_groups_spec.rb +3 -3
- data/spec/rubocop/cop/rspec/not_to_not_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/overwriting_setup_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/predicate_matcher_spec.rb +335 -0
- data/spec/rubocop/cop/rspec/repeated_description_spec.rb +5 -5
- data/spec/rubocop/cop/rspec/repeated_example_spec.rb +5 -5
- data/spec/rubocop/cop/rspec/return_from_stub_spec.rb +85 -0
- data/spec/rubocop/cop/rspec/scattered_let_spec.rb +2 -2
- data/spec/rubocop/cop/rspec/scattered_setup_spec.rb +8 -8
- data/spec/rubocop/cop/rspec/shared_context_spec.rb +10 -10
- data/spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb +10 -10
- data/spec/rubocop/cop/rspec/subject_stub_spec.rb +9 -9
- data/spec/rubocop/cop/rspec/verified_doubles_spec.rb +7 -7
- data/spec/rubocop/cop/rspec/void_expect_spec.rb +47 -0
- data/spec/rubocop/rspec/config_formatter_spec.rb +2 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/expect_offense.rb +17 -0
- metadata +39 -51
- data/spec/expect_violation/expectation_spec.rb +0 -85
- data/spec/support/expect_violation.rb +0 -170
@@ -2,7 +2,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
2
2
|
subject(:cop) { described_class.new }
|
3
3
|
|
4
4
|
it 'flags `each` with an expectation' do
|
5
|
-
|
5
|
+
expect_offense(<<-RUBY)
|
6
6
|
it 'validates users' do
|
7
7
|
[user1, user2, user3].each { |user| expect(user).to be_valid }
|
8
8
|
^^^^^^^^^^^^^^^^^^^^^^^^^^ Prefer using the `all` matcher instead of iterating over an array.
|
@@ -11,7 +11,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'flags `each` when expectation calls method with arguments' do
|
14
|
-
|
14
|
+
expect_offense(<<-RUBY)
|
15
15
|
it 'validates users' do
|
16
16
|
[user1, user2, user3].each { |user| expect(user).to be_a(User) }
|
17
17
|
^^^^^^^^^^^^^^^^^^^^^^^^^^ Prefer using the `all` matcher instead of iterating over an array.
|
@@ -20,7 +20,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'ignores `each` without expectation' do
|
23
|
-
|
23
|
+
expect_no_offenses(<<-RUBY)
|
24
24
|
it 'validates users' do
|
25
25
|
[user1, user2, user3].each { |user| allow(user).to receive(:method) }
|
26
26
|
end
|
@@ -28,7 +28,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'flags `each` with multiple expectations' do
|
31
|
-
|
31
|
+
expect_offense(<<-RUBY)
|
32
32
|
it 'validates users' do
|
33
33
|
[user1, user2, user3].each do |user|
|
34
34
|
^^^^^^^^^^^^^^^^^^^^^^^^^^ Prefer using the `all` matcher instead of iterating over an array.
|
@@ -40,7 +40,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'ignore `each` when the body does not contain only expectations' do
|
43
|
-
|
43
|
+
expect_no_offenses(<<-RUBY)
|
44
44
|
it 'validates users' do
|
45
45
|
[user1, user2, user3].each do |user|
|
46
46
|
allow(Something).to receive(:method).and_return(user)
|
@@ -52,7 +52,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'ignores `each` with expectation on property' do
|
55
|
-
|
55
|
+
expect_no_offenses(<<-RUBY)
|
56
56
|
it 'validates users' do
|
57
57
|
[user1, user2, user3].each { |user| expect(user.name).to be }
|
58
58
|
end
|
@@ -60,7 +60,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'ignores assignments in the iteration' do
|
63
|
-
|
63
|
+
expect_no_offenses(<<-RUBY)
|
64
64
|
it 'validates users' do
|
65
65
|
[user1, user2, user3].each { |user| array = array.concat(user) }
|
66
66
|
end
|
@@ -68,7 +68,7 @@ RSpec.describe RuboCop::Cop::RSpec::IteratedExpectation do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'ignores `each` when there is a negative expectation' do
|
71
|
-
|
71
|
+
expect_no_offenses(<<-RUBY)
|
72
72
|
it 'validates users' do
|
73
73
|
[user1, user2, user3].each do |user|
|
74
74
|
expect(user).not_to receive(:method)
|
@@ -4,7 +4,7 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
4
4
|
subject(:cop) { described_class.new }
|
5
5
|
|
6
6
|
it 'checks subject below let' do
|
7
|
-
|
7
|
+
expect_offense(<<-RUBY)
|
8
8
|
RSpec.describe User do
|
9
9
|
let(:params) { foo }
|
10
10
|
|
@@ -15,7 +15,7 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'checks subject below let!' do
|
18
|
-
|
18
|
+
expect_offense(<<-RUBY)
|
19
19
|
RSpec.describe User do
|
20
20
|
let!(:params) { foo }
|
21
21
|
|
@@ -26,7 +26,7 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'approves of subject above let' do
|
29
|
-
|
29
|
+
expect_no_offenses(<<-RUBY)
|
30
30
|
RSpec.describe User do
|
31
31
|
context 'blah' do
|
32
32
|
end
|
@@ -39,7 +39,7 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'handles subjects in contexts' do
|
42
|
-
|
42
|
+
expect_no_offenses(<<-RUBY)
|
43
43
|
RSpec.describe User do
|
44
44
|
let(:params) { foo }
|
45
45
|
|
@@ -51,7 +51,7 @@ RSpec.describe RuboCop::Cop::RSpec::LeadingSubject do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'handles subjects in tests' do
|
54
|
-
|
54
|
+
expect_no_offenses(<<-RUBY)
|
55
55
|
RSpec.describe User do
|
56
56
|
# This shouldn't really ever happen in a sane codebase but I still
|
57
57
|
# want to avoid false positives
|
@@ -0,0 +1,83 @@
|
|
1
|
+
RSpec.describe RuboCop::Cop::RSpec::LetBeforeExamples do
|
2
|
+
subject(:cop) { described_class.new }
|
3
|
+
|
4
|
+
it 'flags `let` after `it`' do
|
5
|
+
expect_offense(<<-RUBY)
|
6
|
+
RSpec.describe User do
|
7
|
+
it { is_expected.to be_after_let }
|
8
|
+
let(:foo) { bar }
|
9
|
+
^^^^^^^^^^^^^^^^^ Move `let` before the examples in the group.
|
10
|
+
end
|
11
|
+
RUBY
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'flags `let` after `context`' do
|
15
|
+
expect_offense(<<-RUBY)
|
16
|
+
RSpec.describe User do
|
17
|
+
context 'a context' do
|
18
|
+
it { is_expected.to be_after_let }
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:foo) { bar }
|
22
|
+
^^^^^^^^^^^^^^^^^ Move `let` before the examples in the group.
|
23
|
+
end
|
24
|
+
RUBY
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'flags `let` after `include_examples`' do
|
28
|
+
expect_offense(<<-RUBY)
|
29
|
+
RSpec.describe User do
|
30
|
+
include_examples('should be after let')
|
31
|
+
|
32
|
+
let(:foo) { bar }
|
33
|
+
^^^^^^^^^^^^^^^^^ Move `let` before the examples in the group.
|
34
|
+
end
|
35
|
+
RUBY
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'does not flag `let` before the examples' do
|
39
|
+
expect_no_offenses(<<-RUBY)
|
40
|
+
RSpec.describe User do
|
41
|
+
let(:foo) { bar }
|
42
|
+
|
43
|
+
it { is_expected.to be_after_let }
|
44
|
+
|
45
|
+
context 'a context' do
|
46
|
+
it { is_expected.to work }
|
47
|
+
end
|
48
|
+
|
49
|
+
include_examples('everything is fine')
|
50
|
+
end
|
51
|
+
RUBY
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'does not flag `let` in a nested context' do
|
55
|
+
expect_no_offenses(<<-RUBY)
|
56
|
+
RSpec.describe User do
|
57
|
+
let(:foo) { bar }
|
58
|
+
|
59
|
+
context 'something else' do
|
60
|
+
let(:foo) { baz }
|
61
|
+
it { is_expected.to work }
|
62
|
+
end
|
63
|
+
|
64
|
+
include_examples('everything is fine')
|
65
|
+
end
|
66
|
+
RUBY
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'allows inclusion of context before `let`' do
|
70
|
+
expect_no_offenses(<<-RUBY)
|
71
|
+
RSpec.describe User do
|
72
|
+
include_context 'special user'
|
73
|
+
|
74
|
+
let(:foo) { bar }
|
75
|
+
end
|
76
|
+
RUBY
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'does not encounter an error when handling an empty describe' do
|
80
|
+
expect { inspect_source(cop, 'RSpec.describe(User) do end', 'a_spec.rb') }
|
81
|
+
.not_to raise_error
|
82
|
+
end
|
83
|
+
end
|
@@ -4,7 +4,7 @@ RSpec.describe RuboCop::Cop::RSpec::LetSetup do
|
|
4
4
|
subject(:cop) { described_class.new }
|
5
5
|
|
6
6
|
it 'complains when let! is used and not referenced' do
|
7
|
-
|
7
|
+
expect_offense(<<-RUBY)
|
8
8
|
describe Foo do
|
9
9
|
let!(:foo) { bar }
|
10
10
|
^^^^^^^^^^ Do not use `let!` for test setup.
|
@@ -17,7 +17,7 @@ RSpec.describe RuboCop::Cop::RSpec::LetSetup do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'ignores let! when used in `before`' do
|
20
|
-
|
20
|
+
expect_no_offenses(<<-RUBY)
|
21
21
|
describe Foo do
|
22
22
|
let!(:foo) { bar }
|
23
23
|
|
@@ -33,7 +33,7 @@ RSpec.describe RuboCop::Cop::RSpec::LetSetup do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'ignores let! when used in example' do
|
36
|
-
|
36
|
+
expect_no_offenses(<<-RUBY)
|
37
37
|
describe Foo do
|
38
38
|
let!(:foo) { bar }
|
39
39
|
|
@@ -46,7 +46,7 @@ RSpec.describe RuboCop::Cop::RSpec::LetSetup do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'complains when let! is used and not referenced within nested group' do
|
49
|
-
|
49
|
+
expect_offense(<<-RUBY)
|
50
50
|
describe Foo do
|
51
51
|
context 'when something special happens' do
|
52
52
|
let!(:foo) { bar }
|
@@ -2,7 +2,7 @@ RSpec.describe RuboCop::Cop::RSpec::MessageChain do
|
|
2
2
|
subject(:cop) { described_class.new }
|
3
3
|
|
4
4
|
it 'finds `receive_message_chain`' do
|
5
|
-
|
5
|
+
expect_offense(<<-RUBY)
|
6
6
|
before do
|
7
7
|
allow(foo).to receive_message_chain(:one, :two) { :three }
|
8
8
|
^^^^^^^^^^^^^^^^^^^^^ Avoid stubbing using `receive_message_chain`.
|
@@ -11,7 +11,7 @@ RSpec.describe RuboCop::Cop::RSpec::MessageChain do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'finds old `stub_chain` syntax' do
|
14
|
-
|
14
|
+
expect_offense(<<-RUBY)
|
15
15
|
before do
|
16
16
|
foo.stub_chain(:one, :two).and_return(:three)
|
17
17
|
^^^^^^^^^^ Avoid stubbing using `stub_chain`.
|
@@ -9,14 +9,14 @@ RSpec.describe RuboCop::Cop::RSpec::MessageExpectation, :config do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'flags expect(...).to receive' do
|
12
|
-
|
12
|
+
expect_offense(<<-RUBY)
|
13
13
|
expect(foo).to receive(:bar)
|
14
14
|
^^^^^^ Prefer `allow` for setting message expectations.
|
15
15
|
RUBY
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'approves of allow(...).to receive' do
|
19
|
-
|
19
|
+
expect_no_offenses('allow(foo).to receive(:bar)')
|
20
20
|
end
|
21
21
|
|
22
22
|
include_examples 'detects style', 'allow(foo).to receive(:bar)', 'allow'
|
@@ -29,14 +29,14 @@ RSpec.describe RuboCop::Cop::RSpec::MessageExpectation, :config do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'flags allow(...).to receive' do
|
32
|
-
|
32
|
+
expect_offense(<<-RUBY)
|
33
33
|
allow(foo).to receive(:bar)
|
34
34
|
^^^^^ Prefer `expect` for setting message expectations.
|
35
35
|
RUBY
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'approves of expect(...).to receive' do
|
39
|
-
|
39
|
+
expect_no_offenses('expect(foo).to receive(:bar)')
|
40
40
|
end
|
41
41
|
|
42
42
|
include_examples 'detects style', 'expect(foo).to receive(:bar)', 'expect'
|
@@ -9,14 +9,14 @@ RSpec.describe RuboCop::Cop::RSpec::MessageSpies, :config do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'flags expect(send).to receive' do
|
12
|
-
|
12
|
+
expect_offense(<<-RUBY)
|
13
13
|
expect(foo).to receive(:bar)
|
14
14
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `foo` as a spy using `allow` or `instance_spy`.
|
15
15
|
RUBY
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'flags expect(lvar).to receive' do
|
19
|
-
|
19
|
+
expect_offense(<<-RUBY)
|
20
20
|
foo = baz
|
21
21
|
expect(foo).to receive(:bar)
|
22
22
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `foo` as a spy using `allow` or `instance_spy`.
|
@@ -24,49 +24,49 @@ RSpec.describe RuboCop::Cop::RSpec::MessageSpies, :config do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'flags expect(ivar).to receive' do
|
27
|
-
|
27
|
+
expect_offense(<<-RUBY)
|
28
28
|
expect(@foo).to receive(:bar)
|
29
29
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `@foo` as a spy using `allow` or `instance_spy`.
|
30
30
|
RUBY
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'flags expect(const).to receive' do
|
34
|
-
|
34
|
+
expect_offense(<<-RUBY)
|
35
35
|
expect(Foo).to receive(:bar)
|
36
36
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `Foo` as a spy using `allow` or `instance_spy`.
|
37
37
|
RUBY
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'flags expect(...).not_to receive' do
|
41
|
-
|
41
|
+
expect_offense(<<-RUBY)
|
42
42
|
expect(foo).not_to receive(:bar)
|
43
43
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `foo` as a spy using `allow` or `instance_spy`.
|
44
44
|
RUBY
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'flags expect(...).to_not receive' do
|
48
|
-
|
48
|
+
expect_offense(<<-RUBY)
|
49
49
|
expect(foo).to_not receive(:bar)
|
50
50
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `foo` as a spy using `allow` or `instance_spy`.
|
51
51
|
RUBY
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'flags expect(...).to receive with' do
|
55
|
-
|
55
|
+
expect_offense(<<-RUBY)
|
56
56
|
expect(foo).to receive(:bar).with(:baz)
|
57
57
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `foo` as a spy using `allow` or `instance_spy`.
|
58
58
|
RUBY
|
59
59
|
end
|
60
60
|
|
61
61
|
it 'flags expect(...).to receive at_most' do
|
62
|
-
|
62
|
+
expect_offense(<<-RUBY)
|
63
63
|
expect(foo).to receive(:bar).at_most(42).times
|
64
64
|
^^^^^^^ Prefer `have_received` for setting message expectations. Setup `foo` as a spy using `allow` or `instance_spy`.
|
65
65
|
RUBY
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'approves of expect(...).to have_received' do
|
69
|
-
|
69
|
+
expect_no_offenses('expect(foo).to have_received(:bar)')
|
70
70
|
end
|
71
71
|
|
72
72
|
include_examples 'detects style', 'expect(foo).to receive(:bar)', 'receive'
|
@@ -82,14 +82,14 @@ RSpec.describe RuboCop::Cop::RSpec::MessageSpies, :config do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'flags expect(send).to have_received' do
|
85
|
-
|
85
|
+
expect_offense(<<-RUBY)
|
86
86
|
expect(foo).to have_received(:bar)
|
87
87
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
88
88
|
RUBY
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'flags expect(lvar).to have_received' do
|
92
|
-
|
92
|
+
expect_offense(<<-RUBY)
|
93
93
|
foo = baz
|
94
94
|
expect(foo).to have_received(:bar)
|
95
95
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
@@ -97,49 +97,49 @@ RSpec.describe RuboCop::Cop::RSpec::MessageSpies, :config do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'flags expect(ivar).to have_received' do
|
100
|
-
|
100
|
+
expect_offense(<<-RUBY)
|
101
101
|
expect(@foo).to have_received(:bar)
|
102
102
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
103
103
|
RUBY
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'flags expect(const).to have_received' do
|
107
|
-
|
107
|
+
expect_offense(<<-RUBY)
|
108
108
|
expect(Foo).to have_received(:bar)
|
109
109
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
110
110
|
RUBY
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'flags expect(...).not_to have_received' do
|
114
|
-
|
114
|
+
expect_offense(<<-RUBY)
|
115
115
|
expect(foo).not_to have_received(:bar)
|
116
116
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
117
117
|
RUBY
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'flags expect(...).to_not have_received' do
|
121
|
-
|
121
|
+
expect_offense(<<-RUBY)
|
122
122
|
expect(foo).to_not have_received(:bar)
|
123
123
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
124
124
|
RUBY
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'flags expect(...).to have_received with' do
|
128
|
-
|
128
|
+
expect_offense(<<-RUBY)
|
129
129
|
expect(foo).to have_received(:bar).with(:baz)
|
130
130
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
131
131
|
RUBY
|
132
132
|
end
|
133
133
|
|
134
134
|
it 'flags expect(...).to have_received at_most' do
|
135
|
-
|
135
|
+
expect_offense(<<-RUBY)
|
136
136
|
expect(foo).to have_received(:bar).at_most(42).times
|
137
137
|
^^^^^^^^^^^^^ Prefer `receive` for setting message expectations.
|
138
138
|
RUBY
|
139
139
|
end
|
140
140
|
|
141
141
|
it 'approves of expect(...).to receive' do
|
142
|
-
|
142
|
+
expect_no_offenses('expect(foo).to receive(:bar)')
|
143
143
|
end
|
144
144
|
|
145
145
|
include_examples 'detects style', 'expect(foo).to receive(:bar)', 'receive'
|
@@ -2,7 +2,7 @@ RSpec.describe RuboCop::Cop::RSpec::MultipleDescribes do
|
|
2
2
|
subject(:cop) { described_class.new }
|
3
3
|
|
4
4
|
it 'finds multiple top level describes with class and method' do
|
5
|
-
|
5
|
+
expect_offense(<<-RUBY)
|
6
6
|
describe MyClass, '.do_something' do; end
|
7
7
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Do not use multiple top level describes - try to nest them.
|
8
8
|
describe MyClass, '.do_something_else' do; end
|
@@ -10,7 +10,7 @@ RSpec.describe RuboCop::Cop::RSpec::MultipleDescribes do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'finds multiple top level describes only with class' do
|
13
|
-
|
13
|
+
expect_offense(<<-RUBY)
|
14
14
|
describe MyClass do; end
|
15
15
|
^^^^^^^^^^^^^^^^ Do not use multiple top level describes - try to nest them.
|
16
16
|
describe MyOtherClass do; end
|
@@ -18,7 +18,7 @@ RSpec.describe RuboCop::Cop::RSpec::MultipleDescribes do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'skips single top level describe' do
|
21
|
-
|
21
|
+
expect_no_offenses(<<-RUBY)
|
22
22
|
require 'spec_helper'
|
23
23
|
|
24
24
|
describe MyClass do
|