Mutations :: Mixin for validating outcome

Build Status Code Climate Test Coverage Issue Count

Mixin for cypriss/mutations allowing validation of outcome using the same techniques as an input validation by original gem.

Installation

In your Gemfile make a following change:

- gem 'mutations'
+ gem 'mutations-validate-outcome'

In your code:

- require 'mutations'
+ require 'mutations_validate_outcome'

Differences against cypriss/mutations

  • dropped a support for 1.9 and j**
  • CommandReturningHash is a command, that is supposed to return… well, you guessed
  • outcome_required and outcome_optional filters are introduced for the new CommandReturningHash
  • CommandReturningHash#validate_outcome method is a sibling of validate for additional outcome validation

Example

class SimpleCommandReturningHash < Mutations::CommandReturningHash
  required do
    string :name, max_length: 10
    string :email
  end

  optional do
    integer :amount
  end

  outcome_required do
    # outcome[:name] is to be shorter than 6 symbols
    string :name, max_length: 5
    # outcome[:email] is to be presented
    string :email
  end

  outcome_optional do
    integer :amount
  end

  def validate
    add_error(:email, :invalid, 'Email must contain @') unless email && email.include?('@')
  end

  def execute
    inputs
  end

  # outcome[:name] must include 'John' substring
  def validate_outcome(outcome)
    add_error(:name, :invalid, 'Name must contain john') unless outcome[:name].include?('John')
  end
end

TBD:

  • CommandReturningArrayOfHashes

License

The gem is available as open source under the terms of the MIT License.