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