Validixir.Failure (validixir v0.1.1)

Module containing data definition and functionality concering a Failure. An Failure is a struct representing a failed validation.

An Failure consists of the following:

  • A list of Errors, displaying multiple causes for the validation to fail.

Link to this section Summary

Functions

Combines two errors. That is, appending their error list.

Returns true if a value is a failure.

Smart constructor of a failure.

Applies a function to each error in a failure's errors.

Overrides the context of all errors of a failure.

Overrides the message of all errors of a failure.

Link to this section Types

@type t() :: %Validixir.Failure{errors: [Validixir.Error.t()]}

Link to this section Functions

Link to this function

combine(f1, failure)

@spec combine(t(), t()) :: t()

Combines two errors. That is, appending their error list.

examples

Examples

iex> error_1 = Validixir.Error.make(1, :not_allowed, SomeContext)
iex> error_2 = Validixir.Error.make(2, :also_not_allowed, SomeContext)
iex> failure_1 = Validixir.Failure.make([error_1])
iex> failure_2 = Validixir.Failure.make([error_2])
iex> Validixir.Failure.combine(failure_1, failure_2)
%Validixir.Failure{errors: [
    %Validixir.Error{candidate: 1, message: :not_allowed, context: SomeContext},
    %Validixir.Error{candidate: 2, message: :also_not_allowed, context: SomeContext}
    ]
}
@spec failure?(any()) :: boolean()

Returns true if a value is a failure.

examples

Examples

iex> f = Validixir.Failure.make([])
iex> Validixir.Failure.failure?(f)
true

iex> s = Validixir.Success.make(1)
iex> Validixir.Failure.failure?(s)
false
@spec make([any()]) :: t()

Smart constructor of a failure.

Link to this function

map(failure, f)

@spec map(t(), (Validixir.Error.t() -> Validixir.Error.t())) :: t()

Applies a function to each error in a failure's errors.

examples

Examples

iex> f = Validixir.Failure.make([1, 2, 3])
iex> Validixir.Failure.map(f, fn a -> a + 1 end)
%Validixir.Failure{errors: [2,3,4]}
Link to this function

override_error_contexts(failure, new_context)

@spec override_error_contexts(t(), any()) :: t()

Overrides the context of all errors of a failure.

examples

Examples

iex> error_1 = Validixir.Error.make(1, :not_allowed, SomeContext)
iex> error_2 = Validixir.Error.make(2, :not_allowed, SomeOtherContext)
iex> f = Validixir.Failure.make([error_1, error_2])
iex> Validixir.Failure.override_error_contexts(f, NewFailureContext)
%Validixir.Failure{errors: [
    %Validixir.Error{candidate: 1, message: :not_allowed, context: NewFailureContext},
    %Validixir.Error{candidate: 2, message: :not_allowed, context: NewFailureContext}
    ]
}
Link to this function

override_error_messages(failure, new_message)

@spec override_error_messages(t(), any()) :: t()

Overrides the message of all errors of a failure.

examples

Examples

iex> error_1 = Validixir.Error.make(1, :not_allowed, SomeContext)
iex> error_2 = Validixir.Error.make(2, :also_not_allowed, SomeContext)
iex> f = Validixir.Failure.make([error_1, error_2])
iex> Validixir.Failure.override_error_messages(f, :nonono)
%Validixir.Failure{errors: [
    %Validixir.Error{candidate: 1, message: :nonono, context: SomeContext},
    %Validixir.Error{candidate: 2, message: :nonono, context: SomeContext}
    ]
}