@api private Provides the implementation for `change`. Not intended to be instantiated directly.
# File lib/rspec/matchers/built_in/change.rb, line 85 def initialize(receiver=nil, message=nil, &block) @change_details = ChangeDetails.new(receiver, message, &block) end
@api public Specifies the delta of the expected change.
# File lib/rspec/matchers/built_in/change.rb, line 12 def by(expected_delta) ChangeRelatively.new(@change_details, expected_delta, :by) do |actual_delta| values_match?(expected_delta, actual_delta) end end
@api public Specifies a minimum delta of the expected change.
# File lib/rspec/matchers/built_in/change.rb, line 20 def by_at_least(minimum) ChangeRelatively.new(@change_details, minimum, :by_at_least) do |actual_delta| actual_delta >= minimum end end
@api public Specifies a maximum delta of the expected change.
# File lib/rspec/matchers/built_in/change.rb, line 28 def by_at_most(maximum) ChangeRelatively.new(@change_details, maximum, :by_at_most) do |actual_delta| actual_delta <= maximum end end
@api private @return [String]
# File lib/rspec/matchers/built_in/change.rb, line 74 def description "change #{@change_details.message}" end
# File lib/rspec/matchers/built_in/change.rb, line 55 def does_not_match?(event_proc) raise_block_syntax_error if block_given? !matches?(event_proc) && Proc === event_proc end
@api private @return [String]
# File lib/rspec/matchers/built_in/change.rb, line 62 def failure_message "expected #{@change_details.message} to have changed, but #{positive_failure_reason}" end
@api private @return [String]
# File lib/rspec/matchers/built_in/change.rb, line 68 def failure_message_when_negated "expected #{@change_details.message} not to have changed, but #{negative_failure_reason}" end
@api public Specifies the original value.
# File lib/rspec/matchers/built_in/change.rb, line 42 def from(value) ChangeFromValue.new(@change_details, value) end
@private
# File lib/rspec/matchers/built_in/change.rb, line 47 def matches?(event_proc) @event_proc = event_proc return false unless Proc === event_proc raise_block_syntax_error if block_given? @change_details.perform_change(event_proc) @change_details.changed? end
@private
# File lib/rspec/matchers/built_in/change.rb, line 79 def supports_block_expectations? true end
@api public Specifies the new value you expect.
# File lib/rspec/matchers/built_in/change.rb, line 36 def to(value) ChangeToValue.new(@change_details, value) end
# File lib/rspec/matchers/built_in/change.rb, line 99 def negative_failure_reason return "was not given a block" unless Proc === @event_proc "did change from #{description_of @change_details.actual_before} to #{description_of @change_details.actual_after}" end
# File lib/rspec/matchers/built_in/change.rb, line 94 def positive_failure_reason return "was not given a block" unless Proc === @event_proc "is still #{description_of @change_details.actual_before}" end
# File lib/rspec/matchers/built_in/change.rb, line 89 def raise_block_syntax_error raise SyntaxError, "The block passed to the `change` matcher must use `{ ... }` instead of do/end" end