lib/rr/double_definitions/strategies/strategy.rb
module RR module DoubleDefinitions module Strategies class Strategy attr_reader :double_definition_create attr_reader :definition attr_reader :method_name attr_reader :args attr_reader :kwargs attr_reader :handler include Space::Reader def initialize(double_definition_create) @double_definition_create = double_definition_create end def call(definition, method_name, args, kwargs, handler) @definition = definition @method_name = method_name @args = args @kwargs = kwargs @handler = handler do_call end def verify_subject(subject) end protected def do_call raise NotImplementedError end if KeywordArguments.fully_supported? def permissive_argument if args.empty? and kwargs.empty? definition.with_any_args else definition.with(*args, **kwargs) end end else def permissive_argument if args.empty? definition.with_any_args else definition.with(*args) end end end def reimplementation definition.returns(&handler) end def subject definition.subject end end end end end