123456789_123456789_123456789_123456789_123456789_

Class: RSpec::Mocks::Matchers::HaveReceived Private

Do not use. This class is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
self, Matcher
Inherits: Object
Defined in: rspec-mocks/lib/rspec/mocks/matchers/have_received.rb

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#expected_messages_received_in_order?Boolean (readonly, private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 123

def expected_messages_received_in_order?
  mock_proxy.replay_received_message_on @expectation, &@block
  @expectation.expected_messages_received? && @expectation.ensure_expected_ordering_received!
end

Instance Method Details

#apply_constraints_to(expectation) (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 95

def apply_constraints_to(expectation)
  @constraints.each do |constraint|
    expectation.send(*constraint)
  end
end

#capture_failure_message (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 112

def capture_failure_message
  RSpec::Support.with_failure_notifier(Proc.new { |err, _opt| return err.message }) do
    notify_failure_message
  end
end

#count_constraint (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 106

def count_constraint
  @constraints.map(&:first).find do |constraint|
    COUNT_CONSTRAINTS.include?(constraint)
  end
end

#description

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 48

def description
  (@expectation ||= expect).description_for("have received")
end

#disallow(type, reason = "") (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 85

def disallow(type, reason="")
  RSpec::Mocks.error_generator.raise_have_received_disallowed(type, reason)
end

#does_not_match?(subject) ⇒ Boolean

[ GitHub ]

  
# File 'rspec-mocks/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

#ensure_count_unconstrained (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 101

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 (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 89

def expect
  expectation = mock_proxy.build_expectation(@method_name)
  apply_constraints_to expectation
  expectation
end

#failure_message

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 40

def failure_message
  capture_failure_message
end

#failure_message_when_negated

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 44

def failure_message_when_negated
  capture_failure_message
end

#matcher_name

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 19

def matcher_name
  "have_received"
end

#matches?(subject, &block) ⇒ Boolean

[ GitHub ]

  
# File 'rspec-mocks/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

#mock_proxy (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 128

def mock_proxy
  RSpec::Mocks.space.proxy_for(@subject)
end

#notify_failure_message (private)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 118

def notify_failure_message
  mock_proxy.check_for_unexpected_arguments(@expectation)
  @expectation.generate_error
end

#setup_allowance(_subject, &_block)

[ GitHub ]

  
# File 'rspec-mocks/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)

[ GitHub ]

  
# File 'rspec-mocks/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)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 75

def setup_any_instance_expectation(_subject, &_block)
  disallow("expect_any_instance_of")
end

#setup_any_instance_negative_expectation(_subject, &_block)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/matchers/have_received.rb', line 79

def setup_any_instance_negative_expectation(_subject, &_block)
  disallow("expect_any_instance_of")
end

#setup_expectation(subject, &block)

[ GitHub ]

  
# File 'rspec-mocks/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)

[ GitHub ]

  
# File 'rspec-mocks/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