class RSpec::Matchers::BuiltIn::Change

Not intended to be instantiated directly.
Provides the implementation for ‘change`.
@api private

def by(expected_delta)

Other tags:
    Api: - public
def by(expected_delta)
  ChangeRelatively.new(change_details, expected_delta, :by) do |actual_delta|
    values_match?(expected_delta, actual_delta)
  end
end

def by_at_least(minimum)

Other tags:
    Api: - public
def by_at_least(minimum)
  ChangeRelatively.new(change_details, minimum, :by_at_least) do |actual_delta|
    actual_delta >= minimum
  end
end

def by_at_most(maximum)

Other tags:
    Api: - public
def by_at_most(maximum)
  ChangeRelatively.new(change_details, maximum, :by_at_most) do |actual_delta|
    actual_delta <= maximum
  end
end

def change_details

def change_details
  @change_details ||= ChangeDetails.new(matcher_name, @receiver, @message, &@block)
end

def description

Returns:
  • (String) -

Other tags:
    Api: - private
def description
  "change #{change_details.value_representation}"
end

def does_not_match?(event_proc)

def does_not_match?(event_proc)
  raise_block_syntax_error if block_given?
  perform_change(event_proc) && !change_details.changed?
end

def failure_message

Returns:
  • (String) -

Other tags:
    Api: - private
def failure_message
  "expected #{change_details.value_representation} to have changed, " \
  "but #{positive_failure_reason}"
end

def failure_message_when_negated

Returns:
  • (String) -

Other tags:
    Api: - private
def failure_message_when_negated
  "expected #{change_details.value_representation} not to have changed, " \
  "but #{negative_failure_reason}"
end

def from(value)

Other tags:
    Api: - public
def from(value)
  ChangeFromValue.new(change_details, value)
end

def initialize(receiver=nil, message=nil, &block)

def initialize(receiver=nil, message=nil, &block)
  @receiver = receiver
  @message = message
  @block = block
end

def matches?(event_proc)

Other tags:
    Private: -
def matches?(event_proc)
  raise_block_syntax_error if block_given?
  perform_change(event_proc) && change_details.changed?
end

def negative_failure_reason

def negative_failure_reason
  return "was not given a block" unless Proc === @event_proc
  "did change from #{@actual_before_description} " \
  "to #{description_of change_details.actual_after}"
end

def perform_change(event_proc)

def perform_change(event_proc)
  @event_proc = event_proc
  change_details.perform_change(event_proc) do |actual_before|
    # pre-compute values derived from the `before` value before the
    # mutation is applied, in case the specified mutation is mutation
    # of a single object (rather than a changing what object a method
    # returns). We need to cache these values before the `before` value
    # they are based on potentially gets mutated.
    @actual_before_description = description_of(actual_before)
  end
end

def positive_failure_reason

def positive_failure_reason
  return "was not given a block" unless Proc === @event_proc
  "is still #{@actual_before_description}"
end

def raise_block_syntax_error

def raise_block_syntax_error
  raise SyntaxError, "Block not received by the `change` matcher. " \
  "Perhaps you want to use `{ ... }` instead of do/end?"
end

def supports_block_expectations?

Other tags:
    Private: -
def supports_block_expectations?
  true
end

def supports_value_expectations?

Other tags:
    Private: -
def supports_value_expectations?
  false
end

def to(value)

Other tags:
    Api: - public
def to(value)
  ChangeToValue.new(change_details, value)
end