rubocop-rspec 1.12.0 → 1.13.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/config/default.yml +15 -1
- data/lib/rubocop-rspec.rb +2 -0
- data/lib/rubocop/cop/rspec/any_instance.rb +7 -10
- data/lib/rubocop/cop/rspec/around_block.rb +19 -30
- data/lib/rubocop/cop/rspec/be_eql.rb +3 -7
- data/lib/rubocop/cop/rspec/before_after_all.rb +10 -16
- data/lib/rubocop/cop/rspec/cop.rb +5 -1
- data/lib/rubocop/cop/rspec/describe_class.rb +8 -8
- data/lib/rubocop/cop/rspec/describe_method.rb +6 -5
- data/lib/rubocop/cop/rspec/described_class.rb +2 -2
- data/lib/rubocop/cop/rspec/example_length.rb +5 -8
- data/lib/rubocop/cop/rspec/example_wording.rb +57 -23
- data/lib/rubocop/cop/rspec/expect_actual.rb +3 -9
- data/lib/rubocop/cop/rspec/expect_output.rb +2 -2
- data/lib/rubocop/cop/rspec/file_path.rb +30 -29
- data/lib/rubocop/cop/rspec/hook_argument.rb +1 -1
- data/lib/rubocop/cop/rspec/instance_spy.rb +12 -12
- data/lib/rubocop/cop/rspec/instance_variable.rb +2 -2
- data/lib/rubocop/cop/rspec/it_behaves_like.rb +47 -0
- data/lib/rubocop/cop/rspec/leading_subject.rb +1 -1
- data/lib/rubocop/cop/rspec/message_chain.rb +7 -4
- data/lib/rubocop/cop/rspec/message_spies.rb +6 -5
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +38 -6
- data/lib/rubocop/cop/rspec/named_subject.rb +2 -2
- data/lib/rubocop/cop/rspec/nested_groups.rb +10 -6
- data/lib/rubocop/cop/rspec/not_to_not.rb +12 -23
- data/lib/rubocop/cop/rspec/shared_context.rb +107 -0
- data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +16 -23
- data/lib/rubocop/cop/rspec/subject_stub.rb +4 -4
- data/lib/rubocop/cop/rspec/verified_doubles.rb +4 -3
- data/lib/rubocop/rspec/example_group.rb +1 -1
- data/lib/rubocop/rspec/language.rb +25 -7
- data/lib/rubocop/rspec/version.rb +1 -1
- data/spec/expect_violation/expectation_spec.rb +16 -16
- data/spec/project/changelog_spec.rb +1 -1
- data/spec/project/default_config_spec.rb +1 -1
- data/spec/project/project_requires_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/any_instance_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/around_block_spec.rb +115 -26
- data/spec/rubocop/cop/rspec/be_eql_spec.rb +9 -9
- data/spec/rubocop/cop/rspec/before_after_all_spec.rb +38 -80
- data/spec/rubocop/cop/rspec/describe_class_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/describe_method_spec.rb +2 -2
- data/spec/rubocop/cop/rspec/described_class_spec.rb +13 -13
- data/spec/rubocop/cop/rspec/empty_example_group_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/example_length_spec.rb +3 -32
- data/spec/rubocop/cop/rspec/example_wording_spec.rb +21 -2
- data/spec/rubocop/cop/rspec/expect_actual_spec.rb +33 -18
- data/spec/rubocop/cop/rspec/expect_output_spec.rb +3 -3
- data/spec/rubocop/cop/rspec/file_path_spec.rb +119 -170
- data/spec/rubocop/cop/rspec/focus_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/hook_argument_spec.rb +1 -3
- data/spec/rubocop/cop/rspec/implicit_expect_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/instance_spy_spec.rb +11 -11
- data/spec/rubocop/cop/rspec/instance_variable_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/it_behaves_like_spec.rb +51 -0
- data/spec/rubocop/cop/rspec/leading_subject_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/let_setup_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/message_chain_spec.rb +3 -3
- data/spec/rubocop/cop/rspec/message_expectation_spec.rb +5 -23
- data/spec/rubocop/cop/rspec/message_spies_spec.rb +9 -23
- data/spec/rubocop/cop/rspec/multiple_describes_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/multiple_expectations_spec.rb +66 -3
- data/spec/rubocop/cop/rspec/nested_groups_spec.rb +4 -4
- data/spec/rubocop/cop/rspec/not_to_not_spec.rb +3 -3
- data/spec/rubocop/cop/rspec/repeated_description_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/repeated_example_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/scattered_setup_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/shared_context_spec.rb +142 -0
- data/spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb +5 -5
- data/spec/rubocop/cop/rspec/subject_stub_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/verified_doubles_spec.rb +2 -2
- data/spec/rubocop/rspec/config_formatter_spec.rb +12 -12
- data/spec/rubocop/rspec/description_extractor_spec.rb +23 -23
- data/spec/rubocop/rspec/example_group_spec.rb +11 -11
- data/spec/rubocop/rspec/example_spec.rb +1 -1
- data/spec/rubocop/rspec/language/selector_set_spec.rb +1 -1
- data/spec/rubocop/rspec/util/one_spec.rb +1 -1
- data/spec/rubocop/rspec/wording_spec.rb +1 -1
- data/spec/shared/detects_style_behavior.rb +3 -4
- data/spec/spec_helper.rb +10 -0
- metadata +8 -2
@@ -1,11 +1,11 @@
|
|
1
|
-
describe RuboCop::Cop::RSpec::ExampleWording, :config do
|
1
|
+
RSpec.describe RuboCop::Cop::RSpec::ExampleWording, :config do
|
2
2
|
subject(:cop) { described_class.new(config) }
|
3
3
|
|
4
4
|
context 'with configuration' do
|
5
5
|
let(:cop_config) do
|
6
6
|
{
|
7
7
|
'CustomTransform' => { 'have' => 'has', 'not' => 'does not' },
|
8
|
-
'IgnoredWords'
|
8
|
+
'IgnoredWords' => %w(only really)
|
9
9
|
}
|
10
10
|
end
|
11
11
|
|
@@ -37,6 +37,21 @@ describe RuboCop::Cop::RSpec::ExampleWording, :config do
|
|
37
37
|
RUBY
|
38
38
|
end
|
39
39
|
|
40
|
+
it 'finds leading its' do
|
41
|
+
expect_violation(<<-RUBY)
|
42
|
+
it "it does something" do
|
43
|
+
^^^^^^^^^^^^^^^^^ Do not repeat 'it' when describing your tests.
|
44
|
+
end
|
45
|
+
RUBY
|
46
|
+
end
|
47
|
+
|
48
|
+
it "skips words beginning with 'it'" do
|
49
|
+
expect_no_violations(<<-RUBY)
|
50
|
+
it 'itemizes items' do
|
51
|
+
end
|
52
|
+
RUBY
|
53
|
+
end
|
54
|
+
|
40
55
|
it 'skips descriptions without `should` at the beginning' do
|
41
56
|
expect_no_violations(<<-RUBY)
|
42
57
|
it 'finds no should here' do
|
@@ -47,6 +62,10 @@ describe RuboCop::Cop::RSpec::ExampleWording, :config do
|
|
47
62
|
include_examples 'autocorrect',
|
48
63
|
'it "should only have trait" do end',
|
49
64
|
'it "only has trait" do end'
|
65
|
+
|
66
|
+
include_examples 'autocorrect',
|
67
|
+
'it "it does something" do end',
|
68
|
+
'it "does something" do end'
|
50
69
|
end
|
51
70
|
|
52
71
|
context 'when configuration is empty' do
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
describe RuboCop::Cop::RSpec::ExpectActual do
|
4
|
-
subject(:cop) { described_class.new }
|
3
|
+
RSpec.describe RuboCop::Cop::RSpec::ExpectActual, :config do
|
4
|
+
subject(:cop) { described_class.new(config) }
|
5
5
|
|
6
6
|
it 'flags numeric literal values within expect(...)' do
|
7
7
|
expect_violation(<<-RUBY)
|
8
8
|
describe Foo do
|
9
9
|
it 'uses expect incorrectly' do
|
10
10
|
expect(123).to eq(bar)
|
11
|
-
^^^ Provide the actual you are testing to `expect(...)
|
11
|
+
^^^ Provide the actual you are testing to `expect(...)`.
|
12
12
|
expect(12.3).to eq(bar)
|
13
|
-
^^^^ Provide the actual you are testing to `expect(...)
|
13
|
+
^^^^ Provide the actual you are testing to `expect(...)`.
|
14
14
|
expect(1i).to eq(bar)
|
15
|
-
^^ Provide the actual you are testing to `expect(...)
|
15
|
+
^^ Provide the actual you are testing to `expect(...)`.
|
16
16
|
expect(1r).to eq(bar)
|
17
|
-
^^ Provide the actual you are testing to `expect(...)
|
17
|
+
^^ Provide the actual you are testing to `expect(...)`.
|
18
18
|
end
|
19
19
|
end
|
20
20
|
RUBY
|
@@ -25,9 +25,9 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
25
25
|
describe Foo do
|
26
26
|
it 'uses expect incorrectly' do
|
27
27
|
expect(true).to eq(bar)
|
28
|
-
^^^^ Provide the actual you are testing to `expect(...)
|
28
|
+
^^^^ Provide the actual you are testing to `expect(...)`.
|
29
29
|
expect(false).to eq(bar)
|
30
|
-
^^^^^ Provide the actual you are testing to `expect(...)
|
30
|
+
^^^^^ Provide the actual you are testing to `expect(...)`.
|
31
31
|
end
|
32
32
|
end
|
33
33
|
RUBY
|
@@ -38,9 +38,9 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
38
38
|
describe Foo do
|
39
39
|
it 'uses expect incorrectly' do
|
40
40
|
expect("foo").to eq(bar)
|
41
|
-
^^^^^ Provide the actual you are testing to `expect(...)
|
41
|
+
^^^^^ Provide the actual you are testing to `expect(...)`.
|
42
42
|
expect(:foo).to eq(bar)
|
43
|
-
^^^^ Provide the actual you are testing to `expect(...)
|
43
|
+
^^^^ Provide the actual you are testing to `expect(...)`.
|
44
44
|
end
|
45
45
|
end
|
46
46
|
RUBY
|
@@ -51,7 +51,7 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
51
51
|
describe Foo do
|
52
52
|
it 'uses expect incorrectly' do
|
53
53
|
expect(nil).to eq(bar)
|
54
|
-
^^^ Provide the actual you are testing to `expect(...)
|
54
|
+
^^^ Provide the actual you are testing to `expect(...)`.
|
55
55
|
end
|
56
56
|
end
|
57
57
|
RUBY
|
@@ -74,9 +74,9 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
74
74
|
describe Foo do
|
75
75
|
it 'uses expect incorrectly' do
|
76
76
|
expect([123]).to eq(bar)
|
77
|
-
^^^^^ Provide the actual you are testing to `expect(...)
|
77
|
+
^^^^^ Provide the actual you are testing to `expect(...)`.
|
78
78
|
expect([[123]]).to eq(bar)
|
79
|
-
^^^^^^^ Provide the actual you are testing to `expect(...)
|
79
|
+
^^^^^^^ Provide the actual you are testing to `expect(...)`.
|
80
80
|
end
|
81
81
|
end
|
82
82
|
RUBY
|
@@ -87,9 +87,9 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
87
87
|
describe Foo do
|
88
88
|
it 'uses expect incorrectly' do
|
89
89
|
expect(foo: 1, bar: 2).to eq(bar)
|
90
|
-
^^^^^^^^^^^^^^ Provide the actual you are testing to `expect(...)
|
90
|
+
^^^^^^^^^^^^^^ Provide the actual you are testing to `expect(...)`.
|
91
91
|
expect(foo: 1, bar: [{}]).to eq(bar)
|
92
|
-
^^^^^^^^^^^^^^^^^ Provide the actual you are testing to `expect(...)
|
92
|
+
^^^^^^^^^^^^^^^^^ Provide the actual you are testing to `expect(...)`.
|
93
93
|
end
|
94
94
|
end
|
95
95
|
RUBY
|
@@ -100,9 +100,9 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
100
100
|
describe Foo do
|
101
101
|
it 'uses expect incorrectly' do
|
102
102
|
expect(1..2).to eq(bar)
|
103
|
-
^^^^ Provide the actual you are testing to `expect(...)
|
103
|
+
^^^^ Provide the actual you are testing to `expect(...)`.
|
104
104
|
expect(1...2).to eq(bar)
|
105
|
-
^^^^^ Provide the actual you are testing to `expect(...)
|
105
|
+
^^^^^ Provide the actual you are testing to `expect(...)`.
|
106
106
|
end
|
107
107
|
end
|
108
108
|
RUBY
|
@@ -113,7 +113,7 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
113
113
|
describe Foo do
|
114
114
|
it 'uses expect incorrectly' do
|
115
115
|
expect(/foo|bar/).to eq(bar)
|
116
|
-
^^^^^^^^^ Provide the actual you are testing to `expect(...)
|
116
|
+
^^^^^^^^^ Provide the actual you are testing to `expect(...)`.
|
117
117
|
end
|
118
118
|
end
|
119
119
|
RUBY
|
@@ -123,6 +123,7 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
123
123
|
expect_no_violations(<<-'RUBY')
|
124
124
|
describe Foo do
|
125
125
|
it 'uses expect incorrectly' do
|
126
|
+
expect.to eq(bar)
|
126
127
|
expect([foo]).to eq(bar)
|
127
128
|
expect([[foo]]).to eq(bar)
|
128
129
|
expect(foo: 1, bar: foo).to eq(bar)
|
@@ -133,4 +134,18 @@ describe RuboCop::Cop::RSpec::ExpectActual do
|
|
133
134
|
end
|
134
135
|
RUBY
|
135
136
|
end
|
137
|
+
|
138
|
+
context 'when inspecting rspec-rails routing specs' do
|
139
|
+
let(:cop_config) { {} }
|
140
|
+
|
141
|
+
it 'ignores rspec-rails routing specs' do
|
142
|
+
inspect_source(
|
143
|
+
cop,
|
144
|
+
'expect(get: "/foo").to be_routeable',
|
145
|
+
'spec/routing/foo_spec.rb'
|
146
|
+
)
|
147
|
+
|
148
|
+
expect(cop.offenses).to be_empty
|
149
|
+
end
|
150
|
+
end
|
136
151
|
end
|
@@ -2,14 +2,14 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe RuboCop::Cop::RSpec::ExpectOutput do
|
5
|
+
RSpec.describe RuboCop::Cop::RSpec::ExpectOutput do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
8
|
it 'registers an offense for overwriting $stdout within an example' do
|
9
9
|
expect_violation(<<-RUBY)
|
10
10
|
specify do
|
11
11
|
$stdout = StringIO.new
|
12
|
-
^^^^^^^ Use `expect { ... }.to output(...).to_stdout` instead of mutating $stdout
|
12
|
+
^^^^^^^ Use `expect { ... }.to output(...).to_stdout` instead of mutating $stdout.
|
13
13
|
end
|
14
14
|
RUBY
|
15
15
|
end
|
@@ -19,7 +19,7 @@ describe RuboCop::Cop::RSpec::ExpectOutput do
|
|
19
19
|
expect_violation(<<-RUBY)
|
20
20
|
before(:each) do
|
21
21
|
$stderr = StringIO.new
|
22
|
-
^^^^^^^ Use `expect { ... }.to output(...).to_stderr` instead of mutating $stderr
|
22
|
+
^^^^^^^ Use `expect { ... }.to output(...).to_stderr` instead of mutating $stderr.
|
23
23
|
end
|
24
24
|
RUBY
|
25
25
|
end
|
@@ -1,236 +1,188 @@
|
|
1
|
-
describe RuboCop::Cop::RSpec::FilePath, :config do
|
1
|
+
RSpec.describe RuboCop::Cop::RSpec::FilePath, :config do
|
2
2
|
subject(:cop) { described_class.new(config) }
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
it 'flags an offense' do
|
11
|
-
expect(cop.offenses.size).to eq(1)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'registers the offense on line 1' do
|
15
|
-
expect(cop.offenses.map(&:line)).to eq([1])
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'adds a message saying what the path should end with' do
|
19
|
-
expect(cop.messages).to eql(["Spec path should end with `#{expected}`"])
|
20
|
-
end
|
21
|
-
end
|
4
|
+
it 'registers an offense for a bad path' do
|
5
|
+
expect_violation(<<-RUBY, filename: 'wrong_path_foo_spec.rb')
|
6
|
+
describe MyClass, 'foo' do; end
|
7
|
+
^^^^^^^^^^^^^^^^^^^^^^^ Spec path should end with `my_class*foo*_spec.rb`.
|
8
|
+
RUBY
|
22
9
|
end
|
23
10
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
11
|
+
it 'registers an offense for a wrong class but a correct method' do
|
12
|
+
expect_violation(<<-RUBY, filename: 'wrong_class_foo_spec.rb')
|
13
|
+
describe MyClass, '#foo' do; end
|
14
|
+
^^^^^^^^^^^^^^^^^^^^^^^^ Spec path should end with `my_class*foo*_spec.rb`.
|
15
|
+
RUBY
|
16
|
+
end
|
28
17
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
18
|
+
it 'registers an offense for a repeated .rb' do
|
19
|
+
expect_violation(<<-RUBY, filename: 'my_class/foo_spec.rb.rb')
|
20
|
+
describe MyClass, '#foo' do; end
|
21
|
+
^^^^^^^^^^^^^^^^^^^^^^^^ Spec path should end with `my_class*foo*_spec.rb`.
|
22
|
+
RUBY
|
23
|
+
end
|
33
24
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
25
|
+
it 'registers an offense for a file missing a .rb' do
|
26
|
+
expect_violation(<<-RUBY, filename: 'my_class/foo_specorb')
|
27
|
+
describe MyClass, '#foo' do; end
|
28
|
+
^^^^^^^^^^^^^^^^^^^^^^^^ Spec path should end with `my_class*foo*_spec.rb`.
|
29
|
+
RUBY
|
30
|
+
end
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
32
|
+
it 'registers an offense for a wrong class and highlights metadata' do
|
33
|
+
expect_violation(<<-RUBY, filename: 'wrong_class_foo_spec.rb')
|
34
|
+
describe MyClass, '#foo', blah: :blah do; end
|
35
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Spec path should end with `my_class*foo*_spec.rb`.
|
36
|
+
RUBY
|
37
|
+
end
|
43
38
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
39
|
+
it 'registers an offense for a wrong class name' do
|
40
|
+
expect_violation(<<-RUBY, filename: 'wrong_class_spec.rb')
|
41
|
+
describe MyClass do; end
|
42
|
+
^^^^^^^^^^^^^^^^ Spec path should end with `my_class*_spec.rb`.
|
43
|
+
RUBY
|
44
|
+
end
|
48
45
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
it 'registers an offense for a wrong class name with a symbol argument' do
|
47
|
+
expect_violation(<<-RUBY, filename: 'wrong_class_spec.rb')
|
48
|
+
describe MyClass, :foo do; end
|
49
|
+
^^^^^^^^^^^^^^^^^^^^^^ Spec path should end with `my_class*_spec.rb`.
|
50
|
+
RUBY
|
51
|
+
end
|
53
52
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
53
|
+
it 'registers an offense for a file missing _spec' do
|
54
|
+
expect_violation(<<-RUBY, filename: 'user.rb')
|
55
|
+
describe User do; end
|
56
|
+
^^^^^^^^^^^^^ Spec path should end with `user*_spec.rb`.
|
57
|
+
RUBY
|
58
|
+
end
|
58
59
|
|
59
60
|
it 'skips specs that do not describe a class / method' do
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
'some/class/spec.rb'
|
64
|
-
)
|
65
|
-
expect(cop.offenses).to be_empty
|
61
|
+
expect_no_violations(<<-RUBY, filename: 'some/class/spec.rb')
|
62
|
+
describe 'Test something' do; end
|
63
|
+
RUBY
|
66
64
|
end
|
67
65
|
|
68
66
|
it 'skips specs that do have multiple top level describes' do
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
"describe MyClass, 'do_that' do; end"
|
74
|
-
],
|
75
|
-
'some/class/spec.rb'
|
76
|
-
)
|
77
|
-
expect(cop.offenses).to be_empty
|
67
|
+
expect_no_violations(<<-RUBY, filename: 'some/class/spec.rb')
|
68
|
+
describe MyClass, 'do_this' do; end
|
69
|
+
describe MyClass, 'do_that' do; end
|
70
|
+
RUBY
|
78
71
|
end
|
79
72
|
|
80
73
|
it 'checks class specs' do
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
74
|
+
expect_no_violations(<<-RUBY, filename: 'some/class_spec.rb')
|
75
|
+
describe Some::Class do; end
|
76
|
+
RUBY
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'allows different parent directories' do
|
80
|
+
expect_no_violations(<<-RUBY, filename: 'parent_dir/some/class_spec.rb')
|
81
|
+
describe Some::Class do; end
|
82
|
+
RUBY
|
87
83
|
end
|
88
84
|
|
89
85
|
it 'handles CamelCaps class names' do
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
'my_class_spec.rb'
|
94
|
-
)
|
95
|
-
expect(cop.offenses).to be_empty
|
86
|
+
expect_no_violations(<<-RUBY, filename: 'my_class_spec.rb')
|
87
|
+
describe MyClass do; end
|
88
|
+
RUBY
|
96
89
|
end
|
97
90
|
|
98
91
|
it 'handles ACRONYMClassNames' do
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
'abc_one/two_spec.rb'
|
103
|
-
)
|
104
|
-
expect(cop.offenses).to be_empty
|
92
|
+
expect_no_violations(<<-RUBY, filename: 'abc_one/two_spec.rb')
|
93
|
+
describe ABCOne::Two do; end
|
94
|
+
RUBY
|
105
95
|
end
|
106
96
|
|
107
97
|
it 'handles ALLCAPS class names' do
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
'allcaps_spec.rb'
|
112
|
-
)
|
113
|
-
expect(cop.offenses).to be_empty
|
98
|
+
expect_no_violations(<<-RUBY, filename: 'allcaps_spec.rb')
|
99
|
+
describe ALLCAPS do; end
|
100
|
+
RUBY
|
114
101
|
end
|
115
102
|
|
116
103
|
it 'handles alphanumeric class names' do
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
'ipv4_and_ipv6_spec.rb'
|
121
|
-
)
|
122
|
-
expect(cop.offenses).to be_empty
|
104
|
+
expect_no_violations(<<-RUBY, filename: 'ipv4_and_ipv6_spec.rb')
|
105
|
+
describe IPV4AndIPV6 do; end
|
106
|
+
RUBY
|
123
107
|
end
|
124
108
|
|
125
109
|
it 'checks instance methods' do
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
'some/class/inst_spec.rb'
|
130
|
-
)
|
131
|
-
expect(cop.offenses).to be_empty
|
110
|
+
expect_no_violations(<<-RUBY, filename: 'some/class/inst_spec.rb')
|
111
|
+
describe Some::Class, '#inst' do; end
|
112
|
+
RUBY
|
132
113
|
end
|
133
114
|
|
134
115
|
it 'checks class methods' do
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
'some/class/inst_spec.rb'
|
139
|
-
)
|
140
|
-
expect(cop.offenses).to be_empty
|
116
|
+
expect_no_violations(<<-RUBY, filename: 'some/class/inst_spec.rb')
|
117
|
+
describe Some::Class, '.inst' do; end
|
118
|
+
RUBY
|
141
119
|
end
|
142
120
|
|
143
121
|
it 'allows flat hierarchies for instance methods' do
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
'some/class_inst_spec.rb'
|
148
|
-
)
|
149
|
-
expect(cop.offenses).to be_empty
|
122
|
+
expect_no_violations(<<-RUBY, filename: 'some/class_inst_spec.rb')
|
123
|
+
describe Some::Class, '#inst' do; end
|
124
|
+
RUBY
|
150
125
|
end
|
151
126
|
|
152
127
|
it 'allows flat hierarchies for class methods' do
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
'some/class_inst_spec.rb'
|
157
|
-
)
|
158
|
-
expect(cop.offenses).to be_empty
|
128
|
+
expect_no_violations(<<-RUBY, filename: 'some/class_inst_spec.rb')
|
129
|
+
describe Some::Class, '.inst' do; end
|
130
|
+
RUBY
|
159
131
|
end
|
160
132
|
|
161
133
|
it 'allows subdirs for instance methods' do
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
)
|
167
|
-
expect(cop.offenses).to be_empty
|
134
|
+
filename = 'some/class/instance_methods/inst_spec.rb'
|
135
|
+
expect_no_violations(<<-RUBY, filename: filename)
|
136
|
+
describe Some::Class, '#inst' do; end
|
137
|
+
RUBY
|
168
138
|
end
|
169
139
|
|
170
140
|
it 'allows subdirs for class methods' do
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
)
|
176
|
-
expect(cop.offenses).to be_empty
|
141
|
+
filename = 'some/class/class_methods/inst_spec.rb'
|
142
|
+
expect_no_violations(<<-RUBY, filename: filename)
|
143
|
+
describe Some::Class, '.inst' do; end
|
144
|
+
RUBY
|
177
145
|
end
|
178
146
|
|
179
147
|
it 'ignores non-alphanumeric characters' do
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
'some/class/pred_spec.rb'
|
184
|
-
)
|
185
|
-
expect(cop.offenses).to be_empty
|
148
|
+
expect_no_violations(<<-RUBY, filename: 'some/class/pred_spec.rb')
|
149
|
+
describe Some::Class, '#pred?' do; end
|
150
|
+
RUBY
|
186
151
|
end
|
187
152
|
|
188
153
|
it 'allows bang method' do
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
'some/class/bang_spec.rb'
|
193
|
-
)
|
194
|
-
expect(cop.offenses).to be_empty
|
154
|
+
expect_no_violations(<<-RUBY, filename: 'some/class/bang_spec.rb')
|
155
|
+
describe Some::Class, '#bang!' do; end
|
156
|
+
RUBY
|
195
157
|
end
|
196
158
|
|
197
159
|
it 'allows flexibility with predicates' do
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
)
|
203
|
-
expect(cop.offenses).to be_empty
|
160
|
+
filename = 'some/class/thing_predicate_spec.rb'
|
161
|
+
expect_no_violations(<<-RUBY, filename: filename)
|
162
|
+
describe Some::Class, '#thing?' do; end
|
163
|
+
RUBY
|
204
164
|
end
|
205
165
|
|
206
166
|
it 'allows flexibility with operators' do
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
)
|
212
|
-
expect(cop.offenses).to be_empty
|
167
|
+
filename = 'my_little_class/spaceship_operator_spec.rb'
|
168
|
+
expect_no_violations(<<-RUBY, filename: filename)
|
169
|
+
describe MyLittleClass, '#<=>' do; end
|
170
|
+
RUBY
|
213
171
|
end
|
214
172
|
|
215
173
|
context 'when configured with CustomTransform' do
|
216
174
|
let(:cop_config) { { 'CustomTransform' => { 'FooFoo' => 'foofoo' } } }
|
217
175
|
|
218
176
|
it 'respects custom module name transformation' do
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
'foofoo/some/class/bar_spec.rb'
|
223
|
-
)
|
224
|
-
expect(cop.offenses).to be_empty
|
177
|
+
expect_no_violations(<<-RUBY, filename: 'foofoo/some/class/bar_spec.rb')
|
178
|
+
describe FooFoo::Some::Class, '#bar' do; end
|
179
|
+
RUBY
|
225
180
|
end
|
226
181
|
|
227
182
|
it 'ignores routing specs' do
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
'foofoo/some/class/bar_spec.rb'
|
232
|
-
)
|
233
|
-
expect(cop.offenses).to be_empty
|
183
|
+
expect_no_violations(<<-RUBY, filename: 'foofoo/some/class/bar_spec.rb')
|
184
|
+
describe MyController, "#foo", type: :routing do; end
|
185
|
+
RUBY
|
234
186
|
end
|
235
187
|
end
|
236
188
|
|
@@ -238,12 +190,9 @@ describe RuboCop::Cop::RSpec::FilePath, :config do
|
|
238
190
|
let(:cop_config) { { 'IgnoreMethods' => true } }
|
239
191
|
|
240
192
|
it 'does not care about the described method' do
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
'my_class_spec.rb'
|
245
|
-
)
|
246
|
-
expect(cop.offenses).to be_empty
|
193
|
+
expect_no_violations(<<-RUBY, filename: 'my_class_spec.rb')
|
194
|
+
describe MyClass, '#look_here_a_method' do; end
|
195
|
+
RUBY
|
247
196
|
end
|
248
197
|
end
|
249
198
|
end
|