class RR::DoubleDefinitions::DoubleDefinitionCreate

Constants

NO_SUBJECT

Attributes

double_injection_strategy[R]
implementation_strategy[R]
subject[R]
verification_strategy[R]

Public Class Methods

new() click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 27
def initialize
  @verification_strategy = Strategies::Verification::Stub.new(self)
  @implementation_strategy = Strategies::Implementation::Reimplementation.new(self)
  @double_injection_strategy = self.class.default_double_injection_strategy.call(self)
end

Public Instance Methods

all_instances_of(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
Alias for: instance_of
any_instance_of(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
Alias for: instance_of
call(method_name, *args, &handler) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 33
def call(method_name, *args, &handler)
  definition = DoubleDefinition.new(self)
  verification_strategy.call(definition, method_name, args, handler)
  implementation_strategy.call(definition, method_name, args, handler)
  double_injection_strategy.call(definition, method_name, args, handler)
  definition
end
default_double_injection_strategy() click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 5
def default_double_injection_strategy
  @default_double_injection_strategy ||= lambda do |double_injection_create|
    Strategies::DoubleInjection::Instance.new(double_injection_create)
  end
end
dont_allow(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 118
def dont_allow(subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  self.add_verification_strategy(::RR::DoubleDefinitions::Strategies::Verification::DontAllow, subject, method_name, &definition_eval_block)
end
instance_of(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source

DoubleInjection Strategies

# File lib/rr/double_definitions/double_definition_create.rb, line 132
def instance_of(subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  self.add_double_injection_strategy(::RR::DoubleDefinitions::Strategies::DoubleInjection::AnyInstanceOf, subject, method_name, &definition_eval_block)
end
Also aliased as: any_instance_of, all_instances_of
method_name() click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 45
def method_name
  @verification_strategy.method_name
end
mock(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 110
def mock(subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  self.add_verification_strategy(::RR::DoubleDefinitions::Strategies::Verification::Mock, subject, method_name, &definition_eval_block)
end
proxy(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source

Implementation Strategies

# File lib/rr/double_definitions/double_definition_create.rb, line 123
def proxy(subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  self.add_implementation_strategy(::RR::DoubleDefinitions::Strategies::Implementation::Proxy, subject, method_name, &definition_eval_block)
end
root_subject() click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 41
def root_subject
  subject
end
set_default_double_injection_strategy(strategy_lambda) { || ... } click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 11
def set_default_double_injection_strategy(strategy_lambda)
  original_strategy_lambda = default_double_injection_strategy
  begin
    @default_double_injection_strategy = strategy_lambda
    yield
  ensure
    @default_double_injection_strategy = original_strategy_lambda
  end
end
strong(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 127
def strong(subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  self.add_implementation_strategy(::RR::DoubleDefinitions::Strategies::Implementation::StronglyTypedReimplementation, subject, method_name, &definition_eval_block)
end
stub(subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 114
def stub(subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  self.add_verification_strategy(::RR::DoubleDefinitions::Strategies::Verification::Stub, subject, method_name, &definition_eval_block)
end