class DeepDouble::RecursiveFakeMethod

Public Class Methods

new(fake_method) click to toggle source
# File lib/deep_double/recursive_fake_method.rb, line 7
def initialize(fake_method)
  @fake_method = fake_method
end

Public Instance Methods

call(*args) click to toggle source
# File lib/deep_double/recursive_fake_method.rb, line 11
def call(*args)
  result = @fake_method.call(*args)
  special_case_transforms(result)
end
to_proc() click to toggle source
# File lib/deep_double/recursive_fake_method.rb, line 16
def to_proc
  method(:call).to_proc
end

Private Instance Methods

special_case_transforms(result) click to toggle source
# File lib/deep_double/recursive_fake_method.rb, line 22
def special_case_transforms(result)
  class_name = result.class.name.split('::').last
  case class_name
  when 'Hash'
    Double.new(result) # recursive case
  when 'Proc'
    result.call
  when 'Literal'
    result.value
  else
    result
  end
end