class SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::Double

Public Class Methods

applies_to?(value) click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 6
def self.applies_to?(value)
  value.is_a?(::RSpec::Mocks::Double)
end

Public Instance Methods

call() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 10
def call
  builder = self
  empty = -> { empty? }
  nonempty = -> { !empty? }

  SuperDiff::ObjectInspection::InspectionTree.new do
    only_when empty do
      as_lines_when_rendering_to_lines do
        add_text do |object|
          inspected_class = builder.inspected_class
          inspected_name = builder.inspected_name
          "#<#{inspected_class} #{inspected_name}>"
        end
      end
    end

    only_when nonempty do
      as_lines_when_rendering_to_lines(collection_bookend: :open) do
        add_text do |object|
          inspected_class = builder.inspected_class
          inspected_name = builder.inspected_name
          "#<#{inspected_class} #{inspected_name}"
        end

        when_rendering_to_lines do
          add_text " {"
        end
      end

      when_rendering_to_string do
        add_text " "
      end

      nested do |object|
        insert_hash_inspection_of(builder.doubled_methods)
      end

      as_lines_when_rendering_to_lines(collection_bookend: :close) do
        when_rendering_to_lines do
          add_text "}"
        end

        add_text ">"
      end
    end
  end
end
doubled_method_names() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 93
def doubled_method_names
  object.
    __send__(:__mock_proxy).
    instance_variable_get("@method_doubles").
    keys
end
doubled_methods() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 87
def doubled_methods
  @_doubled_methods ||= doubled_method_names.reduce({}) do |hash, key|
    hash.merge(key => object.public_send(key))
  end
end
empty?() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 58
def empty?
  doubled_methods.empty?
end
inspected_class() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 66
def inspected_class
  case object
  when ::RSpec::Mocks::InstanceVerifyingDouble
    "InstanceDouble"
  when ::RSpec::Mocks::ClassVerifyingDouble
    "ClassDouble"
  when ::RSpec::Mocks::ObjectVerifyingDouble
    "ObjectDouble"
  else
    "Double"
  end
end
inspected_name() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 79
def inspected_name
  if object.instance_variable_get("@name")
    object.instance_variable_get("@name").inspect
  else
    "(anonymous)"
  end
end
nonempty?() click to toggle source
# File lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb, line 62
def nonempty?
  !empty?
end