class RSpec::Mocks::TargetBase

@private

Public Class Methods

delegate_not_to(matcher_method, options={}) click to toggle source
# File lib/rspec/mocks/targets.rb, line 18
def self.delegate_not_to(matcher_method, options={})
  method_name = options.fetch(:from)
  define_method(method_name) do |matcher, &block|
    case matcher
    when Matchers::Receive, Matchers::HaveReceived
      define_matcher(matcher, matcher_method, &block)
    when Matchers::ReceiveMessages, Matchers::ReceiveMessageChain
      raise_negation_unsupported(method_name, matcher)
    else
      raise_unsupported_matcher(method_name, matcher)
    end
  end
end
delegate_to(matcher_method) click to toggle source
# File lib/rspec/mocks/targets.rb, line 9
def self.delegate_to(matcher_method)
  define_method(:to) do |matcher, &block|
    unless matcher_allowed?(matcher)
      raise_unsupported_matcher(:to, matcher)
    end
    define_matcher(matcher, matcher_method, &block)
  end
end
disallow_negation(method_name) click to toggle source
# File lib/rspec/mocks/targets.rb, line 32
def self.disallow_negation(method_name)
  define_method(method_name) do |matcher, *_args|
    raise_negation_unsupported(method_name, matcher)
  end
end
new(target) click to toggle source
# File lib/rspec/mocks/targets.rb, line 5
def initialize(target)
  @target = target
end

Private Instance Methods

define_matcher(matcher, name, &block) click to toggle source
# File lib/rspec/mocks/targets.rb, line 44
def define_matcher(matcher, name, &block)
  matcher.__send__(name, @target, &block)
end
expression() click to toggle source
# File lib/rspec/mocks/targets.rb, line 60
def expression
  self.class::EXPRESSION
end
matcher_allowed?(matcher) click to toggle source
# File lib/rspec/mocks/targets.rb, line 40
def matcher_allowed?(matcher)
  matcher.class.name.start_with?("RSpec::Mocks::Matchers".freeze)
end
raise_negation_unsupported(method_name, matcher) click to toggle source
# File lib/rspec/mocks/targets.rb, line 54
def raise_negation_unsupported(method_name, matcher)
  raise NegationUnsupportedError,
        "`#{expression}(...).#{method_name} #{matcher.name}` is not supported since it "                "doesn't really make sense. What would it even mean?"
end
raise_unsupported_matcher(method_name, matcher) click to toggle source
# File lib/rspec/mocks/targets.rb, line 48
def raise_unsupported_matcher(method_name, matcher)
  raise UnsupportedMatcherError,
        "only the `receive`, `have_received` and `receive_messages` matchers are supported "                "with `#{expression}(...).#{method_name}`, but you have provided: #{matcher}"
end