1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# require 'test_helper'
# require 'uber/inheritable_included'
# module InheritIncludedTo
# def self.call(includer, proc)
# proc.call(includer) # das will ich eigentlich machen
# includer.class_eval do
# @block = proc
# def self.included(base) #
# InheritIncludedTo.call(base, instance_variable_get(:@block))
# end
# end
# end
# end
# class InheritanceTest < Minitest::Spec
# module Feature
# #extend Uber::InheritedIncluded
# CODE_BLOCK = lambda { |base| base.class_eval { extend ClassMethods } } # i want that to be executed at every include
# def self.included(includer) #
# # CODE_BLOCK.call(base)
# InheritIncludedTo.call(includer, CODE_BLOCK)
# end
# module ClassMethods
# def feature; end
# end
# end
# module Extension
# include Feature
# # TODO: test overriding ::included
# end
# module Client
# include Extension
# end
# module ExtendedClient
# include Client
# end
# it { Extension.must_respond_to :feature }
# it { Client.must_respond_to :feature }
# it { ExtendedClient.must_respond_to :feature }
# end
|