module ActiveMocker::MockCreator::DefinedMethods

Constants

Method

Public Instance Methods

class_methods() click to toggle source
# File lib/active_mocker/mock_creator/defined_methods.rb, line 15
def class_methods
  class_introspector
    .get_class
    .methods(false)
    .sort
    .map { |m| create_method(m, :method) }
end
instance_methods() click to toggle source
# File lib/active_mocker/mock_creator/defined_methods.rb, line 9
def instance_methods
  meths = class_introspector.get_class.public_instance_methods(false).sort
  meths << :initialize if safe_methods[:instance_methods].include?(:initialize)
  meths.map { |m| create_method(m, :instance_method) }
end

Private Instance Methods

create_method(m, type) click to toggle source
# File lib/active_mocker/mock_creator/defined_methods.rb, line 25
def create_method(m, type)
  plural_type = (type.to_s + "s").to_sym
  if safe_method?(type, m)
    def_type   = type == :method ? :class_defs : :defs
    def_method = class_introspector.parsed_source.public_send(def_type).detect { |meth| meth.name == m }
    raise "ActiveMocker.safe_methods is unable to find #{plural_type}: #{m}" unless def_method
    Method.new(
      m,
      def_method.arguments,
      def_method.body
    )
  else
    type_symbol = type == :method ? "::" : "#"
    Method.new(
      m,
      ReverseParameters.new(
        class_introspector.get_class.send(type, m).parameters
      ).parameters,
      "__am_raise_not_mocked_error(method: __method__, caller: Kernel.caller, type: '#{type_symbol}')"
    )
  end
end