spec/rubocop/cop/rspec/described_class_spec.rb in rubocop-rspec-1.4.1 vs spec/rubocop/cop/rspec/described_class_spec.rb in rubocop-rspec-1.5.0
- old
+ new
@@ -2,113 +2,167 @@
describe RuboCop::Cop::RSpec::DescribedClass do
subject(:cop) { described_class.new }
it 'checks for the use of the described class' do
- inspect_source(cop, ['describe MyClass do',
- ' include MyClass',
- ' subject { MyClass.do_something }',
- ' before { MyClass.do_something }',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyClass do',
+ ' include MyClass',
+ ' subject { MyClass.do_something }',
+ ' before { MyClass.do_something }',
+ 'end'
+ ]
+ )
expect(cop.offenses.size).to eq(3)
expect(cop.offenses.map(&:line).sort).to eq([2, 3, 4])
expect(cop.messages)
.to eq(['Use `described_class` instead of `MyClass`'] * 3)
expect(cop.highlights).to eq(['MyClass'] * 3)
end
it 'ignores described class as string' do
- inspect_source(cop, ['describe MyClass do',
- ' subject { "MyClass" }',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyClass do',
+ ' subject { "MyClass" }',
+ 'end'
+ ]
+ )
expect(cop.offenses).to be_empty
end
it 'ignores describe that do not referece to a class' do
- inspect_source(cop, ['describe "MyClass" do',
- ' subject { "MyClass" }',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe "MyClass" do',
+ ' subject { "MyClass" }',
+ 'end'
+ ]
+ )
expect(cop.offenses).to be_empty
end
it 'ignores class if the scope is changing' do
- inspect_source(cop, ['describe MyClass do',
- ' def method',
- ' include MyClass',
- ' end',
- ' class OtherClass',
- ' include MyClass',
- ' end',
- ' module MyModle',
- ' include MyClass',
- ' end',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyClass do',
+ ' def method',
+ ' include MyClass',
+ ' end',
+ ' class OtherClass',
+ ' include MyClass',
+ ' end',
+ ' module MyModle',
+ ' include MyClass',
+ ' end',
+ 'end'
+ ]
+ )
expect(cop.offenses).to be_empty
end
it 'only takes class from top level describes' do
- inspect_source(cop, ['describe MyClass do',
- ' describe MyClass::Foo do',
- ' subject { MyClass::Foo }',
- ' let(:foo) { MyClass }',
- ' end',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyClass do',
+ ' describe MyClass::Foo do',
+ ' subject { MyClass::Foo }',
+ ' let(:foo) { MyClass }',
+ ' end',
+ 'end'
+ ]
+ )
expect(cop.offenses.size).to eq(1)
expect(cop.offenses.map(&:line).sort).to eq([4])
expect(cop.messages)
.to eq(['Use `described_class` instead of `MyClass`'])
expect(cop.highlights).to eq(['MyClass'])
end
it 'ignores subclasses' do
- inspect_source(cop, ['describe MyClass do',
- ' subject { MyClass::SubClass }',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyClass do',
+ ' subject { MyClass::SubClass }',
+ 'end'
+ ]
+ )
expect(cop.offenses).to be_empty
end
it 'ignores if namespace is not matching' do
- inspect_source(cop, ['describe MyNamespace::MyClass do',
- ' subject { ::MyClass }',
- ' let(:foo) { MyClass }',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyNamespace::MyClass do',
+ ' subject { ::MyClass }',
+ ' let(:foo) { MyClass }',
+ 'end'
+ ]
+ )
expect(cop.offenses).to be_empty
end
it 'checks for the use of described class with namespace' do
- inspect_source(cop, ['describe MyNamespace::MyClass do',
- ' subject { MyNamespace::MyClass }',
- 'end'])
+ inspect_source(
+ cop,
+ [
+ 'describe MyNamespace::MyClass do',
+ ' subject { MyNamespace::MyClass }',
+ 'end'
+ ]
+ )
expect(cop.offenses.size).to eq(1)
expect(cop.offenses.map(&:line).sort).to eq([2])
expect(cop.messages)
.to eq(['Use `described_class` instead of `MyNamespace::MyClass`'])
expect(cop.highlights).to eq(['MyNamespace::MyClass'])
end
it 'checks for the use of described class with module' do
skip
- inspect_source(cop, ['module MyNamespace',
- ' describe MyClass do',
- ' subject { MyNamespace::MyClass }',
- ' end',
- 'end'])
+ inspect_source(
+ lcop,
+ [
+ 'module MyNamespace',
+ ' describe MyClass do',
+ ' subject { MyNamespace::MyClass }',
+ ' end',
+ 'end'
+ ]
+ )
expect(cop.offenses.size).to eq(1)
expect(cop.offenses.map(&:line).sort).to eq([2])
expect(cop.messages)
.to eq(['Use `described_class` instead of `MyNamespace::MyClass`'])
expect(cop.highlights).to eq(['MyNamespace::MyClass'])
end
it 'autocorrects an offenses' do
- new_source = autocorrect_source(cop, ['describe MyClass do',
- ' include MyClass',
- ' subject { MyClass.do_something }',
- ' before { MyClass.do_something }',
- 'end'])
- expect(new_source).to eq(['describe MyClass do',
- ' include described_class',
- ' subject { described_class.do_something }',
- ' before { described_class.do_something }',
- 'end'].join("\n"))
+ new_source = autocorrect_source(
+ cop,
+ [
+ 'describe MyClass do',
+ ' include MyClass',
+ ' subject { MyClass.do_something }',
+ ' before { MyClass.do_something }',
+ 'end'
+ ]
+ )
+ expect(new_source).to eq(
+ [
+ 'describe MyClass do',
+ ' include described_class',
+ ' subject { described_class.do_something }',
+ ' before { described_class.do_something }',
+ 'end'
+ ].join("\n")
+ )
end
end