debian-mirror-gitlab/spec/rubocop/cop/inject_enterprise_edition_module_spec.rb

273 lines
7.3 KiB
Ruby
Raw Normal View History

2019-02-15 15:39:39 +05:30
# frozen_string_literal: true
2020-07-28 23:09:34 +05:30
require 'fast_spec_helper'
2019-02-15 15:39:39 +05:30
require 'rubocop'
require 'rubocop/rspec/support'
require_relative '../../../rubocop/cop/inject_enterprise_edition_module'
2020-07-28 23:09:34 +05:30
RSpec.describe RuboCop::Cop::InjectEnterpriseEditionModule, type: :rubocop do
2019-02-15 15:39:39 +05:30
include CopHelper
subject(:cop) { described_class.new }
2019-10-12 21:52:04 +05:30
it 'flags the use of `prepend_if_ee EE` in the middle of a file' do
2019-02-15 15:39:39 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-02-15 15:39:39 +05:30
end
SOURCE
end
2019-12-04 20:38:33 +05:30
it 'flags the use of `prepend_if_ee QA::EE` in the middle of a file' do
expect_offense(<<~SOURCE)
class Foo
prepend_if_ee 'QA::EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'does not flag the use of `prepend_if_ee EEFoo` in the middle of a file' do
2019-03-02 22:35:43 +05:30
expect_no_offenses(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'EEFoo'
2019-03-02 22:35:43 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `prepend_if_ee EE::Foo::Bar` in the middle of a file' do
2019-03-02 22:35:43 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'EE::Foo::Bar'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-03-02 22:35:43 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `prepend_if_ee(EE::Foo::Bar)` in the middle of a file' do
2019-03-02 22:35:43 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee('EE::Foo::Bar')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-03-02 22:35:43 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `prepend_if_ee EE::Foo::Bar::Baz` in the middle of a file' do
2019-03-02 22:35:43 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'EE::Foo::Bar::Baz'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-03-02 22:35:43 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `prepend_if_ee ::EE` in the middle of a file' do
2019-02-15 15:39:39 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee '::EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-02-15 15:39:39 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `include_if_ee EE` in the middle of a file' do
2019-02-15 15:39:39 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
include_if_ee 'EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-02-15 15:39:39 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `include_if_ee ::EE` in the middle of a file' do
2019-02-15 15:39:39 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
include_if_ee '::EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-02-15 15:39:39 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `extend_if_ee EE` in the middle of a file' do
2019-02-15 15:39:39 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
extend_if_ee 'EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-02-15 15:39:39 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'flags the use of `extend_if_ee ::EE` in the middle of a file' do
2019-02-15 15:39:39 +05:30
expect_offense(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
extend_if_ee '::EE::Foo'
^^^^^^^^^^^^^^^^^^^^^^^^ Injecting EE modules must be done on the last line of this file, outside of any class or module definitions
2019-02-15 15:39:39 +05:30
end
SOURCE
end
it 'does not flag prepending of regular modules' do
expect_no_offenses(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'Foo'
2019-02-15 15:39:39 +05:30
end
SOURCE
end
it 'does not flag including of regular modules' do
expect_no_offenses(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
include_if_ee 'Foo'
2019-02-15 15:39:39 +05:30
end
SOURCE
end
it 'does not flag extending using regular modules' do
expect_no_offenses(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
extend_if_ee 'Foo'
2019-02-15 15:39:39 +05:30
end
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'does not flag the use of `prepend_if_ee EE` on the last line' do
2019-02-15 15:39:39 +05:30
expect_no_offenses(<<~SOURCE)
class Foo
end
2019-10-12 21:52:04 +05:30
Foo.prepend_if_ee('EE::Foo')
2019-02-15 15:39:39 +05:30
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'does not flag the use of `include_if_ee EE` on the last line' do
2019-02-15 15:39:39 +05:30
expect_no_offenses(<<~SOURCE)
class Foo
end
2019-10-12 21:52:04 +05:30
Foo.include_if_ee('EE::Foo')
2019-02-15 15:39:39 +05:30
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'does not flag the use of `extend_if_ee EE` on the last line' do
2019-02-15 15:39:39 +05:30
expect_no_offenses(<<~SOURCE)
class Foo
end
2019-10-12 21:52:04 +05:30
Foo.extend_if_ee('EE::Foo')
2019-02-15 15:39:39 +05:30
SOURCE
end
2020-05-24 23:13:21 +05:30
it 'does not flag the double use of `X_if_ee` on the last line' do
expect_no_offenses(<<~SOURCE)
class Foo
end
Foo.extend_if_ee('EE::Foo')
Foo.include_if_ee('EE::Foo')
Foo.prepend_if_ee('EE::Foo')
SOURCE
end
2020-06-23 00:09:42 +05:30
it 'does not flag the use of `prepend_if_ee EE` as long as all injections are at the end of the file' do
expect_no_offenses(<<~SOURCE)
class Foo
end
Foo.include_if_ee('EE::Foo')
Foo.prepend_if_ee('EE::Foo')
Foo.include(Bar)
# comment on prepending Bar
Foo.prepend(Bar)
SOURCE
end
2019-02-15 15:39:39 +05:30
it 'autocorrects offenses by just disabling the Cop' do
source = <<~SOURCE
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'EE::Foo'
include_if_ee 'Bar'
2019-02-15 15:39:39 +05:30
end
SOURCE
expect(autocorrect_source(source)).to eq(<<~SOURCE)
class Foo
2019-10-12 21:52:04 +05:30
prepend_if_ee 'EE::Foo' # rubocop: disable Cop/InjectEnterpriseEditionModule
include_if_ee 'Bar'
end
SOURCE
end
it 'disallows the use of prepend to inject an EE module' do
expect_offense(<<~SOURCE)
class Foo
end
Foo.prepend(EE::Foo)
^^^^^^^^^^^^^^^^^^^^ EE modules must be injected using `include_if_ee`, `extend_if_ee`, or `prepend_if_ee`
SOURCE
end
2019-12-04 20:38:33 +05:30
it 'disallows the use of prepend to inject a QA::EE module' do
expect_offense(<<~SOURCE)
class Foo
end
Foo.prepend(QA::EE::Foo)
^^^^^^^^^^^^^^^^^^^^^^^^ EE modules must be injected using `include_if_ee`, `extend_if_ee`, or `prepend_if_ee`
SOURCE
end
2019-10-12 21:52:04 +05:30
it 'disallows the use of extend to inject an EE module' do
expect_offense(<<~SOURCE)
class Foo
2019-02-15 15:39:39 +05:30
end
2019-10-12 21:52:04 +05:30
Foo.extend(EE::Foo)
^^^^^^^^^^^^^^^^^^^ EE modules must be injected using `include_if_ee`, `extend_if_ee`, or `prepend_if_ee`
SOURCE
end
it 'disallows the use of include to inject an EE module' do
expect_offense(<<~SOURCE)
class Foo
end
Foo.include(EE::Foo)
^^^^^^^^^^^^^^^^^^^^ EE modules must be injected using `include_if_ee`, `extend_if_ee`, or `prepend_if_ee`
SOURCE
end
it 'disallows the use of prepend_if_ee without a String' do
expect_offense(<<~SOURCE)
class Foo
end
Foo.prepend_if_ee(EE::Foo)
^^^^^^^ EE modules to inject must be specified as a String
SOURCE
end
it 'disallows the use of include_if_ee without a String' do
expect_offense(<<~SOURCE)
class Foo
end
Foo.include_if_ee(EE::Foo)
^^^^^^^ EE modules to inject must be specified as a String
SOURCE
end
it 'disallows the use of extend_if_ee without a String' do
expect_offense(<<~SOURCE)
class Foo
end
Foo.extend_if_ee(EE::Foo)
^^^^^^^ EE modules to inject must be specified as a String
2019-02-15 15:39:39 +05:30
SOURCE
end
end