Class: RSpec::Matchers::BuiltIn::Change Private
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
BaseMatcher
|
|
Instance Chain:
|
|
Inherits: |
RSpec::Matchers::BuiltIn::BaseMatcher
|
Defined in: | rspec-expectations/lib/rspec/matchers/built_in/change.rb |
Overview
Provides the implementation for RSpec::Matchers#change. Not intended to be instantiated directly.
Constant Summary
BaseMatcher
- Inherited
Class Method Summary
- .new(receiver = nil, message = nil, &block) ⇒ Change constructor private Internal use only
BaseMatcher
- Inherited
.matcher_name, .new, | |
.underscore | Borrowed from ActiveSupport. |
Instance Attribute Summary
- #supports_block_expectations? ⇒ Boolean readonly Internal use only
- #supports_value_expectations? ⇒ Boolean readonly Internal use only
BaseMatcher
- Inherited
#actual, | |
#diffable? |
|
#expected, #expects_call_stack_jump?, #matcher_name, #matcher_name=, #rescued_exception, | |
#supports_block_expectations? | Most matchers are value matchers (i.e. meant to work with ‘expect(value)`) rather than block matchers (i.e. meant to work with `expect { }`), so this defaults to false. |
#supports_value_expectations? |
BaseMatcher::StringEncodingFormatting
- Included
#string_encoding_differs? | :nocov: |
Instance Method Summary
-
#by(expected_delta)
Specifies the delta of the expected change.
-
#by_at_least(minimum)
Specifies a minimum delta of the expected change.
-
#by_at_most(maximum)
Specifies a maximum delta of the expected change.
- #description ⇒ String Internal use only
- #does_not_match?(event_proc) ⇒ Boolean Internal use only
- #failure_message ⇒ String Internal use only
- #failure_message_when_negated ⇒ String Internal use only
-
#from(value)
Specifies the original value.
- #matches?(event_proc) ⇒ Boolean Internal use only
-
#to(value)
Specifies the new value you expect.
- #change_details private Internal use only
- #negative_failure_reason private Internal use only
- #perform_change(event_proc) private Internal use only
- #positive_failure_reason private Internal use only
- #raise_block_syntax_error private Internal use only
BaseMatcher
- Inherited
#actual_formatted, | |
#description | Generates a description using |
#expected_formatted, | |
#match_unless_raises | Used to wrap a block of code that will indicate failure by raising one of the named exceptions. |
#matches? | Indicates if the match is successful. |
BaseMatcher::DefaultFailureMessages
- Included
#failure_message | Provides a good generic failure message. |
#failure_message_when_negated | Provides a good generic negative failure message. |
BaseMatcher::StringEncodingFormatting
- Included
#format_encoding | Formats a String’s encoding as a human readable string :nocov: |
BaseMatcher::HashFormatting
- Included
#improve_hash_formatting | ‘{ |
::RSpec::Matchers::Composable
- Included
#& | Alias for Composable#and. |
#=== | Delegates to #matches?. |
#and | Creates a compound |
#description_of | Returns the description of the given object in a way that is aware of composed matchers. |
#or | Creates a compound |
#values_match? | This provides a generic way to fuzzy-match an expected value against an actual value. |
#| | Alias for Composable#or. |
#should_enumerate? | We should enumerate arrays as long as they are not recursive. |
#surface_descriptions_in | Transforms the given data structure (typically a hash or array) into a new data structure that, when |
#unreadable_io?, | |
#with_matchers_cloned | Historically, a single matcher instance was only checked against a single value. |
Instance Attribute Details
#supports_block_expectations? ⇒ Boolean
(readonly)
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 76
def supports_block_expectations? true end
#supports_value_expectations? ⇒ Boolean
(readonly)
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 81
def supports_value_expectations? false end
Instance Method Details
#by(expected_delta)
Specifies the delta of the expected change.
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 10
def by(expected_delta) ChangeRelatively.new(change_details, expected_delta, :by) do |actual_delta| values_match?(expected_delta, actual_delta) end end
#by_at_least(minimum)
Specifies a minimum delta of the expected change.
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 18
def by_at_least(minimum) ChangeRelatively.new(change_details, minimum, :by_at_least) do |actual_delta| actual_delta >= minimum end end
#by_at_most(maximum)
Specifies a maximum delta of the expected change.
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 26
def by_at_most(maximum) ChangeRelatively.new(change_details, maximum, :by_at_most) do |actual_delta| actual_delta <= maximum end end
#change_details (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 93
def change_details @change_details ||= ChangeDetails.new(matcher_name, @receiver, @message, &@block) end
#description ⇒ String
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 71
def description "change #{change_details.value_representation}" end
#does_not_match?(event_proc) ⇒ Boolean
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 50
def does_not_match?(event_proc) raise_block_syntax_error if block_given? perform_change(event_proc) && !change_details.changed? end
#failure_message ⇒ String
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 57
def "expected #{change_details.value_representation} to have changed, " \ "but #{positive_failure_reason}" end
#failure_message_when_negated ⇒ String
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 64
def "expected #{change_details.value_representation} not to have changed, " \ "but #{negative_failure_reason}" end
#from(value)
Specifies the original value.
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 40
def from(value) ChangeFromValue.new(change_details, value) end
#matches?(event_proc) ⇒ Boolean
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 45
def matches?(event_proc) raise_block_syntax_error if block_given? perform_change(event_proc) && change_details.changed? end
#negative_failure_reason (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 119
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
#perform_change(event_proc) (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 97
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
#positive_failure_reason (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 114
def positive_failure_reason return "was not given a block" unless Proc === @event_proc "is still #{@actual_before_description}" end
#raise_block_syntax_error (private)
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 109
def raise_block_syntax_error raise SyntaxError, "Block not received by the `change` matcher. " \ "Perhaps you want to use `{ ... }` instead of do/end?" end
#to(value)
Specifies the new value you expect.
# File 'rspec-expectations/lib/rspec/matchers/built_in/change.rb', line 34
def to(value) ChangeToValue.new(change_details, value) end