Skip to content
Snippets Groups Projects
Commit 99b27e69 authored by Vitali Tatarintev's avatar Vitali Tatarintev
Browse files

Utilize Rubocop's Include for BeSuccessMatcher

Use Rubocop's Include
instead of manually checking the matcher in controllers specs.
parent b61d26f4
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -265,3 +265,11 @@ RSpec/EnvAssignment:
- 'ee/spec/**/rails_helper.rb'
- 'spec/**/spec_helper.rb'
- 'ee/spec/**/spec_helper.rb'
RSpec/BeSuccessMatcher:
Enabled: true
Include:
- 'spec/controllers/**/*'
- 'ee/spec/controllers/**/*'
- 'spec/support/shared_examples/controllers/**/*'
- 'ee/spec/support/shared_examples/controllers/**/*'
- 'spec/support/controllers/**/*'
Loading
Loading
@@ -41,7 +41,6 @@ module RuboCop
end
 
def on_send(node)
return unless in_controller_spec?(node)
return unless be_success_usage?(node)
 
add_offense(node, location: :expression, message: MESSAGE)
Loading
Loading
Loading
Loading
@@ -2,7 +2,6 @@ module RuboCop
module SpecHelpers
SPEC_HELPERS = %w[fast_spec_helper.rb rails_helper.rb spec_helper.rb].freeze
MIGRATION_SPEC_DIRECTORIES = ['spec/migrations', 'spec/lib/gitlab/background_migration'].freeze
CONTROLLER_SPEC_DIRECTORIES = ['spec/controllers', 'spec/support/shared_examples/controllers'].freeze
 
# Returns true if the given node originated from the spec directory.
def in_spec?(node)
Loading
Loading
@@ -27,20 +26,5 @@ module RuboCop
in_spec?(node) &&
path.start_with?(*migration_directories)
end
def controller_directories
@controller_directories ||= CONTROLLER_SPEC_DIRECTORIES.map do |dir|
pwd = RuboCop::PathUtil.pwd
[File.join(pwd, dir), File.join(pwd, 'ee', dir)]
end.flatten
end
# Returns true if the given node originated from a controller spec.
def in_controller_spec?(node)
path = node.location.expression.source_buffer.name
in_spec?(node) &&
path.start_with?(*controller_directories)
end
end
end
Loading
Loading
@@ -59,35 +59,17 @@ describe RuboCop::Cop::RSpec::BeSuccessMatcher do
end
end
 
context 'in a controller spec file' do
before do
allow(cop).to receive(:in_controller_spec?).and_return(true)
CODE_EXAMPLES.each do |code_example|
context "using #{code_example[:bad]} call" do
it_behaves_like 'an offensive be_success call', code_example[:bad]
it_behaves_like 'an autocorrected be_success call', code_example[:bad], code_example[:good]
end
 
CODE_EXAMPLES.each do |code_example|
context "using #{code_example[:bad]} call" do
it_behaves_like 'an offensive be_success call', code_example[:bad]
it_behaves_like 'an autocorrected be_success call', code_example[:bad], code_example[:good]
end
context "using #{code_example[:good]} call" do
it 'does not register an offense' do
inspect_source(code_example[:good])
expect(cop.offenses.size).to eq(0)
end
end
end
end
context 'outside of a controller spec file' do
CODE_EXAMPLES.each do |code_example|
context "using #{code_example[:bad]} call" do
it 'does not register an offense' do
inspect_source(code_example[:bad])
context "using #{code_example[:good]} call" do
it 'does not register an offense' do
inspect_source(code_example[:good])
 
expect(cop.offenses.size).to eq(0)
end
expect(cop.offenses.size).to eq(0)
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment