@private
# File lib/rspec/mocks/matchers/have_received.rb, line 10 def initialize(method_name, &block) @method_name = method_name @block = block @constraints = [] @subject = nil end
# File lib/rspec/mocks/matchers/have_received.rb, line 43 def description expect.description end
# File lib/rspec/mocks/matchers/have_received.rb, line 28 def does_not_match?(subject) @subject = subject ensure_count_unconstrained @expectation = expect.never expected_messages_received_in_order? end
# File lib/rspec/mocks/matchers/have_received.rb, line 35 def failure_message generate_failure_message end
# File lib/rspec/mocks/matchers/have_received.rb, line 39 def failure_message_when_negated generate_failure_message end
# File lib/rspec/mocks/matchers/have_received.rb, line 21 def matches?(subject, &block) @block ||= block @subject = subject @expectation = expect expected_messages_received_in_order? end
# File lib/rspec/mocks/matchers/have_received.rb, line 17 def name "have_received" end
# File lib/rspec/mocks/matchers/have_received.rb, line 64 def apply_constraints_to(expectation) @constraints.each do |constraint| expectation.send(*constraint) end end
# File lib/rspec/mocks/matchers/have_received.rb, line 77 def count_constraint @constraints.map(&:first).detect do |constraint| COUNT_CONSTRAINTS.include?(constraint) end end
# File lib/rspec/mocks/matchers/have_received.rb, line 70 def ensure_count_unconstrained if count_constraint raise RSpec::Mocks::MockExpectationError, "can't use #{count_constraint} when negative" end end
# File lib/rspec/mocks/matchers/have_received.rb, line 56 def expect @expectation ||= begin expectation = mock_proxy.build_expectation(@method_name) apply_constraints_to expectation expectation end end
# File lib/rspec/mocks/matchers/have_received.rb, line 90 def expected_messages_received_in_order? mock_proxy.replay_received_message_on @expectation, &@block @expectation.expected_messages_received? && @expectation.ensure_expected_ordering_received! end
# File lib/rspec/mocks/matchers/have_received.rb, line 83 def generate_failure_message mock_proxy.check_for_unexpected_arguments(@expectation) @expectation.generate_error rescue RSpec::Mocks::MockExpectationError => error error.message end
# File lib/rspec/mocks/matchers/have_received.rb, line 95 def mock_proxy RSpec::Mocks.space.proxy_for(@subject) end