class RSpec::Mocks::Matchers::HaveReceived
@private
Constants
- ARGS_CONSTRAINTS
- CONSTRAINTS
- COUNT_CONSTRAINTS
Public Class Methods
new(method_name, &block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 12 def initialize(method_name, &block) @method_name = method_name @block = block @constraints = [] @subject = nil end
Public Instance Methods
description()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 48 def description (@expectation ||= expect).description_for("have received") end
does_not_match?(subject)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 32 def does_not_match?(subject) @subject = subject ensure_count_unconstrained @expectation = expect.never mock_proxy.ensure_implemented(@method_name) expected_messages_received_in_order? end
failure_message()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 40 def failure_message capture_failure_message end
failure_message_when_negated()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 44 def failure_message_when_negated capture_failure_message end
matches?(subject, &block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 23 def matches?(subject, &block) @block ||= block @subject = subject @expectation = expect mock_proxy.ensure_implemented(@method_name) expected_messages_received_in_order? end
name()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 19 def name "have_received" end
setup_allowance(_subject, &_block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 67 def setup_allowance(_subject, &_block) disallow("allow", " as it would have no effect") end
setup_any_instance_allowance(_subject, &_block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 71 def setup_any_instance_allowance(_subject, &_block) disallow("allow_any_instance_of") end
setup_any_instance_expectation(_subject, &_block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 75 def setup_any_instance_expectation(_subject, &_block) disallow("expect_any_instance_of") end
setup_expectation(subject, &block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 59 def setup_expectation(subject, &block) notify_failure_message unless matches?(subject, &block) end
setup_negative_expectation(subject, &block)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 63 def setup_negative_expectation(subject, &block) notify_failure_message unless does_not_match?(subject, &block) end
Private Instance Methods
apply_constraints_to(expectation)
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 91 def apply_constraints_to(expectation) @constraints.each do |constraint| expectation.send(*constraint) end end
capture_failure_message()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 108 def capture_failure_message RSpec::Support.with_failure_notifier(Proc.new { |err, _opt| return err.message }) do notify_failure_message end end
count_constraint()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 102 def count_constraint @constraints.map(&:first).find do |constraint| COUNT_CONSTRAINTS.include?(constraint) end end
disallow(type, reason="")
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 81 def disallow(type, reason="") RSpec::Mocks.error_generator.raise_have_received_disallowed(type, reason) end
ensure_count_unconstrained()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 97 def ensure_count_unconstrained return unless count_constraint RSpec::Mocks.error_generator.raise_cant_constrain_count_for_negated_have_received_error(count_constraint) end
expect()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 85 def expect expectation = mock_proxy.build_expectation(@method_name) apply_constraints_to expectation expectation end
expected_messages_received_in_order?()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 119 def expected_messages_received_in_order? mock_proxy.replay_received_message_on @expectation, &@block @expectation.expected_messages_received? && @expectation.ensure_expected_ordering_received! end
mock_proxy()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 124 def mock_proxy RSpec::Mocks.space.proxy_for(@subject) end
notify_failure_message()
click to toggle source
# File lib/rspec/mocks/matchers/have_received.rb, line 114 def notify_failure_message mock_proxy.check_for_unexpected_arguments(@expectation) @expectation.generate_error end