spec/rubocop/cop/rspec/describe_class_spec.rb in rubocop-rspec-1.5.2 vs spec/rubocop/cop/rspec/describe_class_spec.rb in rubocop-rspec-1.5.3

- old
+ new

@@ -1,110 +1,113 @@ describe RuboCop::Cop::RSpec::DescribeClass do subject(:cop) { described_class.new } it 'checks first-line describe statements' do - inspect_source(cop, 'describe "bad describe" do; end') - expect(cop.offenses.size).to eq(1) - expect(cop.offenses.map(&:line).sort).to eq([1]) - expect(cop.messages).to eq(['The first argument to describe should be ' \ - 'the class or module being tested.']) + expect_violation(<<-RUBY) + describe "bad describe" do + ^^^^^^^^^^^^^^ The first argument to describe should be the class or module being tested. + end + RUBY end it 'supports RSpec.describe' do - inspect_source(cop, 'RSpec.describe Foo do; end') - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + RSpec.describe Foo do + end + RUBY end it 'checks describe statements after a require' do - inspect_source( - cop, - [ - "require 'spec_helper'", - 'describe "bad describe" do; end' - ] - ) - expect(cop.offenses.size).to eq(1) - expect(cop.offenses.map(&:line).sort).to eq([2]) - expect(cop.messages).to eq(['The first argument to describe should be ' \ - 'the class or module being tested.']) + expect_violation(<<-RUBY) + require 'spec_helper' + describe "bad describe" do + ^^^^^^^^^^^^^^ The first argument to describe should be the class or module being tested. + end + RUBY end it 'checks highlights the first argument of a describe' do - inspect_source(cop, 'describe "bad describe", "blah blah" do; end') - expect(cop.offenses.first.location.column_range).to eq(9...23) + expect_violation(<<-RUBY) + describe "bad describe", "blah blah" do + ^^^^^^^^^^^^^^ The first argument to describe should be the class or module being tested. + end + RUBY end it 'ignores nested describe statements' do - inspect_source( - cop, - [ - 'describe Some::Class do', - ' describe "bad describe" do; end', - 'end' - ] - ) - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe Some::Class do + describe "bad describe" do + end + end + RUBY end it 'ignores request specs' do - inspect_source(cop, "describe 'my new feature', type: :request do; end") - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe 'my new feature', type: :request do + end + RUBY end it 'ignores feature specs' do - inspect_source(cop, "describe 'my new feature', type: :feature do; end") - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe 'my new feature', type: :feature do + end + RUBY end it 'ignores feature specs when RSpec.describe is used' do - inspect_source( - cop, - "RSpec.describe 'my new feature', type: :feature do; end" - ) - - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + RSpec.describe 'my new feature', type: :feature do + end + RUBY end it 'flags specs with non :type metadata' do - inspect_source(cop, "describe 'my new feature', foo: :feature do; end") - expect(cop.messages).to eq(['The first argument to describe should be ' \ - 'the class or module being tested.']) + expect_violation(<<-RUBY) + describe 'my new feature', foo: :feature do + ^^^^^^^^^^^^^^^^ The first argument to describe should be the class or module being tested. + end + RUBY end it 'flags normal metadata in describe' do - inspect_source(cop, "describe 'my new feature', blah, type: :wow do; end") - expect(cop.messages).to eq(['The first argument to describe should be ' \ - 'the class or module being tested.']) + expect_violation(<<-RUBY) + describe 'my new feature', blah, type: :wow do + ^^^^^^^^^^^^^^^^ The first argument to describe should be the class or module being tested. + end + RUBY end it 'ignores feature specs - also with complex options' do - inspect_source( - cop, - [ - "describe 'my new feature',", - ' :test, :type => :feature, :foo => :bar do;', - 'end' - ] - ) - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe 'my new feature', :test, :type => :feature, :foo => :bar do + end + RUBY end it 'ignores an empty describe' do - inspect_source(cop, 'describe do; end') - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe do + end + RUBY end it 'ignores routing specs' do - inspect_source(cop, "describe 'my new route', type: :routing do; end") - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe 'my new route', type: :routing do + end + RUBY end it 'ignores view specs' do - inspect_source(cop, "describe 'widgets/index', type: :view do; end") - expect(cop.offenses).to be_empty + expect_no_violations(<<-RUBY) + describe 'widgets/index', type: :view do + end + RUBY end it "doesn't blow up on single-line describes" do - inspect_source(cop, 'describe Some::Class') - expect(cop.offenses).to be_empty + expect_no_violations('describe Some::Class') end end