Class | RR::DoubleDefinitions::DoubleInjections::NewInstanceOf |
In: |
lib/rr/double_definitions/double_injections/new_instance_of.rb
|
Parent: | Object |
# File lib/rr/double_definitions/double_injections/new_instance_of.rb, line 30 30: def add_method_chain_definition(subject_instance, double_definition_create) 31: implementation_strategy = double_definition_create.implementation_strategy 32: if implementation_strategy.method_name 33: stub(subject_instance).method_missing( 34: implementation_strategy.method_name, 35: *implementation_strategy.args, 36: &implementation_strategy.handler 37: ) 38: end 39: end
# File lib/rr/double_definitions/double_injections/new_instance_of.rb, line 23 23: def add_stubbed_methods(subject_instance, stubbed_methods) 24: stubbed_methods.each do |name, value| 25: value_proc = value.is_a?(Proc) ? value : lambda {value} 26: stub(subject_instance, name).returns(&value_proc) 27: end 28: end
# File lib/rr/double_definitions/double_injections/new_instance_of.rb, line 7 7: def call(subject, stubbed_methods={}) 8: double_definition_create = DoubleDefinitionCreate.new.stub 9: stub.proxy(subject).allocate do |instance| 10: add_stubbed_methods(instance, stubbed_methods) 11: add_method_chain_definition(instance, double_definition_create) 12: yield(instance) if block_given? 13: instance 14: end 15: stub(subject).new do |*args| 16: instance = subject.allocate 17: initialize_subject_instance(instance, args) 18: end 19: DoubleDefinitionCreateBlankSlate.new(double_definition_create) 20: end
# File lib/rr/double_definitions/double_injections/new_instance_of.rb, line 41 41: def initialize_subject_instance(subject_instance, args) 42: if args.last.is_a?(ProcFromBlock) 43: subject_instance.__send__(:initialize, *args[0..(args.length-2)], &args.last) 44: else 45: subject_instance.__send__(:initialize, *args) 46: end 47: subject_instance 48: end