Class: RSpec::Matchers::BuiltIn::HaveAttributes 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/have_attributes.rb |
Overview
Provides the implementation for RSpec::Matchers#have_attributes. Not intended to be instantiated directly.
Constant Summary
BaseMatcher
- Inherited
Class Method Summary
- .new(expected) ⇒ HaveAttributes constructor Internal use only
BaseMatcher
- Inherited
.matcher_name, .new, | |
.underscore | Borrowed from ActiveSupport. |
Instance Attribute Summary
- #diffable? ⇒ Boolean readonly Internal use only
- #respond_to_failed readonly Internal use only
- #respond_to_attributes? ⇒ Boolean readonly private 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
- #actual Internal use only
- #description ⇒ String Internal use only
- #does_not_match?(actual) ⇒ Boolean Internal use only
- #failure_message ⇒ String Internal use only
- #failure_message_when_negated ⇒ String Internal use only
- #matches?(actual) ⇒ Boolean Internal use only
- #actual_has_attribute?(attribute_key, attribute_value) ⇒ Boolean private Internal use only
- #cache_all_values private Internal use only
- #formatted_values private Internal use only
- #perform_match(predicate) private Internal use only
- #respond_to_failure_message_or private Internal use only
- #respond_to_matcher 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
#diffable? ⇒ Boolean
(readonly)
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 50
def diffable? !@respond_to_failed && !@negated end
#respond_to_attributes? ⇒ Boolean
(readonly, private)
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 89
def respond_to_attributes? matches = respond_to_matcher.matches?(@actual) @respond_to_failed = !matches matches end
#respond_to_failed (readonly)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 9
attr_reader :respond_to_failed
Instance Method Details
#actual
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 19
def actual @values end
#actual_has_attribute?(attribute_key, attribute_value) ⇒ Boolean
(private)
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 85
def actual_has_attribute?(attribute_key, attribute_value) values_match?(attribute_value, @values.fetch(attribute_key)) end
#cache_all_values (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 70
def cache_all_values @values = {} expected.each do |attribute_key, _attribute_value| actual_value = @actual.__send__(attribute_key) @values[attribute_key] = actual_value end end
#description ⇒ String
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 43
def description described_items = surface_descriptions_in(expected) improve_hash_formatting "have attributes #{RSpec::Support::ObjectFormatter.format(described_items)}" end
#does_not_match?(actual) ⇒ Boolean
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 34
def does_not_match?(actual) @actual = actual @negated = true return false unless respond_to_attributes? perform_match(:none?) end
#failure_message ⇒ String
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 56
def do "expected #{actual_formatted} to #{description} but had attributes #{ formatted_values }" end end
#failure_message_when_negated ⇒ String
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 64
def { "expected #{actual_formatted} not to #{description}" } end
#formatted_values (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 107
def formatted_values values = RSpec::Support::ObjectFormatter.format(@values) improve_hash_formatting(values) end
#matches?(actual) ⇒ Boolean
# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 25
def matches?(actual) @actual = actual @negated = false return false unless respond_to_attributes? perform_match(:all?) end
#perform_match(predicate) (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 78
def perform_match(predicate) cache_all_values expected.__send__(predicate) do |attribute_key, attribute_value| actual_has_attribute?(attribute_key, attribute_value) end end
#respond_to_failure_message_or (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb', line 99
def if respond_to_failed respond_to_matcher. else improve_hash_formatting(yield) end end