Class RR::DoubleDefinitions::DoubleInjections::NewInstanceOf
In: lib/rr/double_definitions/double_injections/new_instance_of.rb
Parent: Object

Methods

Included Modules

RR::Adapters::RRMethods

Public Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Validate]