class NRSER::AttrError

Raised when we expected `#count` to be something it's not.

Extends {NRSER::ValueError}, and the {#value} must be the instance that

Public Instance Methods

actual() click to toggle source

Get an optional actual value for the attribute, from `context` if it exists or by sending {#name} to {#value} if it works.

@return [nil]

If {#context} does not have an `:actual` value and {#value} raises
a {StandardError}.

@return [Object]

The value of {#context}'s `:actual` key, if any, otherwise {#value}'s
response to {#name}.
# File lib/nrser/errors/attr_error.rb, line 119
def actual
  if context.key? :actual
    context[ :actual ]
  elsif value? && name?
    value.public_send name
  end
rescue StandardError => error
  nil
end
actual?() click to toggle source

Tests if an 'actual' value was provided in the {#context}.

@return [Boolean]

# File lib/nrser/errors/attr_error.rb, line 101
def actual?
  context.key?( :actual ) || ( value? && name? && value.respond_to?( name ) )
rescue StandardError => error
  false
end
default_message() click to toggle source

Create a default message if none was provided.

Uses whatever recognized {#context} values are present, falling back to {NicerError#default_message} if none are.

@return [String]

Calls superclass method
# File lib/nrser/errors/attr_error.rb, line 137
def default_message
  message = []

  if value? && name?
    message << format_message(  value.class, "object", value.inspect,
                                "has invalid ##{ name } attribute" )
  end

  if expected?
    message << format_message( "expected", expected )
  end

  if actual?
    message << format_message( "found", actual )
  end

  if message.empty?
    super
  else
    message.join ', '
  end
end