Sha256: 9853380a7a7da5968b38480f42219307930307dd0fe0cbd90bf5deb14d7bf6b7

Contents?: true

Size: 1.44 KB

Versions: 6

Compression:

Stored size: 1.44 KB

Contents

RSpec.describe Dry::Validation do
  subject(:validation) { schema.new }

  shared_context 'uses custom predicates' do
    it 'uses provided custom predicates' do
      expect(validation.(email: 'jane@doe')).to be_empty

      expect(validation.(email: nil)).to match_array([
        [:error, [:input, [:email, nil, [[:val, [:email, [:predicate, [:filled?, []]]]]]]]]
      ])

      expect(validation.(email: 'jane')).to match_array([
        [:error, [:input, [:email, 'jane', [[:val, [:email, [:predicate, [:email?, []]]]]]]]]
      ])
    end
  end

  describe 'defining schema with custom predicates container' do
    let(:schema) do
      Class.new(Dry::Validation::Schema) do
        configure do |config|
          config.predicates = Test::Predicates
        end

        key(:email) { |value| value.filled? & value.email? }
      end
    end

    before do
      module Test
        module Predicates
          include Dry::Validation::Predicates

          predicate(:email?) do |input|
            input.include?('@') # for the lols
          end
        end
      end
    end

    include_context 'uses custom predicates'
  end

  describe 'defining schema with custom predicate methods' do
    let(:schema) do
      Class.new(Dry::Validation::Schema) do
        key(:email) { |value| value.filled? & value.email? }

        def email?(value)
          value.include?('@')
        end
      end
    end

    include_context 'uses custom predicates'
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
dry-validation-0.4.1 spec/integration/custom_predicates_spec.rb
dry-validation-0.4.0 spec/integration/custom_predicates_spec.rb
dry-validation-0.3.1 spec/integration/custom_predicates_spec.rb
dry-validation-0.3.0 spec/integration/custom_predicates_spec.rb
dry-validation-0.2.0 spec/integration/custom_predicates_spec.rb
dry-validation-0.1.0 spec/integration/custom_predicates_spec.rb