Handles when ClassMethods is used inside a class

This commit is contained in:
Jacopo 2018-08-28 10:58:36 +02:00
parent a1cad13b92
commit e3e746623b
2 changed files with 15 additions and 2 deletions

View File

@ -48,7 +48,7 @@ module RuboCop
private
def extends_activesupport_concern?(node)
container_module = container_module_of(node.parent)
container_module = container_module_of(node)
return false unless container_module
container_module.descendants.any? do |descendant|
@ -57,7 +57,9 @@ module RuboCop
end
def container_module_of(node)
node = node.parent until node.type == :module
while node = node.parent
break if node.type == :module
end
node
end

View File

@ -48,6 +48,17 @@ describe RuboCop::Cop::PreferClassMethodsOverModule do
RUBY
end
it "doesn't flag violation when ClassMethods is used inside a class" do
expect_no_offenses(<<~RUBY)
class Foo
module ClassMethods
def a_class_method
end
end
end
RUBY
end
it "doesn't flag violation when not using either class_methods or ClassMethods" do
expect_no_offenses(<<~RUBY)
module Foo