Class: RSpec::Rails::Matchers::BeANew Private
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
BaseMatcher
|
|
Instance Chain:
|
|
Inherits: |
RSpec::Rails::Matchers::BaseMatcher
|
Defined in: | rspec-rails/lib/rspec/rails/matchers/be_a_new.rb |
Overview
Matcher class for #be_a_new. Should not be instantiated directly.
Constant Summary
BaseMatcher
- Inherited
Class Method Summary
- .new(expected) ⇒ BeANew constructor Internal use only
BaseMatcher
- Inherited
.matcher_name, .new, | |
.underscore | Borrowed from ActiveSupport. |
Instance Attribute Summary
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. |
Instance Method Summary
- #failure_message Internal use only
- #matches?(actual) ⇒ Boolean Internal use only
- #with(expected_attributes)
- #attributes private Internal use only
- #attributes_match?(actual) ⇒ Boolean private Internal use only
- #unmatched_attributes 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. |
#assert_ivars, #present_ivars |
BaseMatcher::DefaultFailureMessages
- Included
#failure_message | Provides a good generic failure message. |
#failure_message_when_negated | Provides a good generic negative failure message. |
BaseMatcher::HashFormatting
- Included
#improve_hash_formatting | ‘{ |
::RSpec::Matchers::Composable
- Included
#& | Alias for Matchers::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 Matchers::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 Method Details
#attributes (private)
[ GitHub ]# File 'rspec-rails/lib/rspec/rails/matchers/be_a_new.rb', line 47
def attributes @attributes ||= {} end
#attributes_match?(actual) ⇒ Boolean
(private)
# File 'rspec-rails/lib/rspec/rails/matchers/be_a_new.rb', line 51
def attributes_match?(actual) attributes.stringify_keys.all? do |key, value| values_match?(value, actual.attributes[key]) end end
#failure_message
[ GitHub ]# File 'rspec-rails/lib/rspec/rails/matchers/be_a_new.rb', line 29
def [].tap do || unless actual.is_a?(expected) && actual.new_record? << "expected #{actual.inspect} to be a new #{expected.inspect}" end unless attributes_match?(actual) describe_unmatched_attributes = surface_descriptions_in(unmatched_attributes) if unmatched_attributes.size > 1 << "attributes #{describe_unmatched_attributes.inspect} were not set on #{actual.inspect}" else << "attribute #{describe_unmatched_attributes.inspect} was not set on #{actual.inspect}" end end end.join(' and ') end
#matches?(actual) ⇒ Boolean
# File 'rspec-rails/lib/rspec/rails/matchers/be_a_new.rb', line 16
def matches?(actual) @actual = actual actual.is_a?(expected) && actual.new_record? && attributes_match?(actual) end
#unmatched_attributes (private)
[ GitHub ]# File 'rspec-rails/lib/rspec/rails/matchers/be_a_new.rb', line 57
def unmatched_attributes attributes.stringify_keys.reject do |key, value| values_match?(value, actual.attributes[key]) end end
#with(expected_attributes)
# File 'rspec-rails/lib/rspec/rails/matchers/be_a_new.rb', line 23
def with(expected_attributes) attributes.merge!(expected_attributes) self end