Stannum

A library for defining and validating data structures.

Class: Stannum::Constraints::Presence

Parent Namespace
Stannum::Constraints
Inherited Classes
Stannum::Constraints::Base > Object
Defined In
lib/stannum/constraints/presence.rb

Table Of Contents

Overview

A presence constraint asserts that the object is not nil and not empty.

Examples

Using a Presence constraint

constraint = Stannum::Constraints::Presence.new

constraint.matches?(nil) #=> false
constraint.matches?(Object.new)  #=> true

Using a Presence constraint with an Array

constraint.matches?([])        #=> false
constraint.matches?([1, 2, 3]) #=> true

Using a Presence constraint with an Hash

constraint.matches?({})               #=> false
constraint.matches?({ key: 'value' }) #=> true

Back To Top

Constants

NEGATED_TYPE

= 'stannum.constraints.present'

The :type of the error generated for a matching object.

TYPE

= 'stannum.constraints.absent'

The :type of the error generated for a non-matching object.

Back To Top

Constructor

#initialize(**options) => Base

Inherited From
Stannum::Constraints::Base

Parameters

Options Hash (options)

Returns

Back To Top

Instance Attributes

#options => Hash<Symbol, Object>

Inherited From
Stannum::Constraints::Base

Returns

Back To Top

Instance Methods

#==(other) => true, false

Inherited From
Stannum::Constraints::Base

Performs an equality comparison.

Parameters

Returns

#clone(freeze: nil) => Stannum::Constraints::Base

Inherited From
Stannum::Constraints::Base

Produces a shallow copy of the constraint.

Parameters

Returns

#does_not_match?(actual) => true, false

Inherited From
Stannum::Constraints::Base

Checks that the given object does not match the constraint.

Examples

Checking a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new

constraint.does_not_match?(object) #=> false

Checking a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new

constraint.does_not_match?(object) #=> true

Parameters

Returns

See Also

#dup => Stannum::Constraints::Base

Inherited From
Stannum::Constraints::Base

Produces a shallow copy of the constraint.

Returns

#errors_for(actual, errors: nil) => Stannum::Errors

Inherited From
Stannum::Constraints::Base

Note: This method should only be called for an object that does not match the constraint. Generating errors for a matching object can result in undefined behavior.

Generates an errors object for the given object.

The errors object represents the difference between the given object and the expected properties or behavior. It may be the same for all objects, or different based on the details of the object or the constraint.

Examples

Generating errors for a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new
errors     = constraint.errors_for(object)

errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Parameters

Returns

See Also

#match(actual) => Object

Inherited From
Stannum::Constraints::Base

Checks the given object against the constraint and returns errors, if any.

This method checks the given object against the expected properties or behavior. If the object matches the constraint, #match will return true. If the object does not match the constraint, #match will return false and the generated errors for that object.

Examples

Checking a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new

success, errors = constraint.match(object)
success #=> true
errors  #=> nil

Checking a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new

success, errors = constraint.match(object)
success      #=> false
errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Parameters

See Also

#matches?(actual) => true, false

Also known as: match?

Checks that the object is not nil and not empty.

Returns

See Also

#message => String, nil

Inherited From
Stannum::Constraints::Base

Returns

#negated_errors_for(actual, errors: nil) => Stannum::Errors

Inherited From
Stannum::Constraints::Base

Note: This method should only be called for an object that matches the constraint. Generating errors for a matching object can result in undefined behavior.

Generates an errors object for the given object when negated.

The errors object represents the difference between the given object and the expected properties or behavior when the constraint is negated. It may be the same for all objects, or different based on the details of the object or the constraint.

Examples

Generating errors for a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new
errors     = constraint.negated_errors_for(object)

errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Parameters

Returns

See Also

#negated_match(actual) => Object

Inherited From
Stannum::Constraints::Base

Checks the given object against the constraint and returns errors, if any.

This method checks the given object against the expected properties or behavior. If the object matches the constraint, #negated_match will return false and the generated errors for that object. If the object does not match the constraint, #negated_match will return true.

Examples

Checking a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new

success, errors = constraint.negated_match(object)
success      #=> false
errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Checking a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new

success, errors = constraint.negated_match(object)
success #=> true
errors  #=> nil

Parameters

See Also

#negated_message => String, nil

Inherited From
Stannum::Constraints::Base

Returns

#negated_type => String

Inherited From
Stannum::Constraints::Base

Returns

#type => String

Inherited From
Stannum::Constraints::Base

Returns

#with_options(**options) => Stannum::Constraints::Base

Inherited From
Stannum::Constraints::Base

Creates a copy of the constraint and updates the copy’s options.

Parameters

Returns

Back To Top


Back to Documentation | Reference | Stannum | Stannum::Constraints