class ModuleConcernTest

Public Instance Methods

should_be_public() click to toggle source
# File activesupport/test/core_ext/module/concerning_test.rb, line 18
def should_be_public; end
test_concern_creates_a_module_extended_with_active_support_concern() click to toggle source
# File activesupport/test/core_ext/module/concerning_test.rb, line 14
def test_concern_creates_a_module_extended_with_active_support_concern
  klass = Class.new do
    concern :Baz do
      included { @foo = 1 }
      def should_be_public; end
    end
  end

  # Declares a concern but doesn't include it
  assert klass.const_defined?(:Baz, false)
  assert !ModuleConcernTest.const_defined?(:Baz)
  assert_kind_of ActiveSupport::Concern, klass::Baz
  assert_not_includes klass.ancestors, klass::Baz, klass.ancestors.inspect

  # Public method visibility by default
  assert_includes klass::Baz.public_instance_methods.map(&:to_s), "should_be_public"

  # Calls included hook
  assert_equal 1, Class.new { include klass::Baz }.instance_variable_get("@foo")
end
test_using_class_methods_blocks_instead_of_ClassMethods_module() click to toggle source
# File activesupport/test/core_ext/module/concerning_test.rb, line 57
def test_using_class_methods_blocks_instead_of_ClassMethods_module
  assert !Foo.respond_to?(:will_be_orphaned)
  assert Foo.respond_to?(:hacked_on)
  assert Foo.respond_to?(:nicer_dsl)
  assert Foo.respond_to?(:doesnt_clobber)

  # Orphan in Foo::ClassMethods, not Bar::ClassMethods.
  assert Foo.const_defined?(:ClassMethods)
  assert Foo::ClassMethods.method_defined?(:will_be_orphaned)
end