Sha256: 5c31a1870cbdd417999f1c26550efe08cc81edc65e0afc0715722f84be253214

Contents?: true

Size: 754 Bytes

Versions: 1

Compression:

Stored size: 754 Bytes

Contents

require 'validation_matcher/version'
require 'rspec/expectations'

module ValidationMatcher

  RSpec::Matchers.define :validate do |*expected|
    attr_reader :expected_attribute, :expected_options, :expected_validator

    chain(:of)   { |field| @expected_attribute = field }
    chain(:with) { |hash|  @expected_options = hash }

    match do |actual|
      @expected_options ||= {}
      @expected_validator = expected.first

      validator?
    end

    def attribute_validators
      expected_attribute ? actual.class.validators_on(expected_attribute) : []
    end

    def validator?
      attribute_validators.any? do |validator|
        validator.kind == expected_validator && validator.options == expected_options
      end
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
validation_matcher-3.1.0 lib/validation_matcher.rb