Sha256: d477dc780ada31b34b1a4a0b6b3e9790d6a9d6345a9e8b066a98b9cd4a386da3

Contents?: true

Size: 793 Bytes

Versions: 6

Compression:

Stored size: 793 Bytes

Contents

RSpec.describe 'Defining base schema class' do
  subject(:schema) do
    Dry::Validation.Schema(BaseSchema) do
      required(:email).filled(:email?)
    end
  end

  before do
    class BaseSchema < Dry::Validation::Schema
      configure do |config|
        config.messages_file = SPEC_ROOT.join('fixtures/locales/en.yml')
        config.messages = :i18n
      end

      def email?(value)
        true
      end

      define! do
        required(:name).filled
      end
    end
  end

  after do
    Object.send(:remove_const, :BaseSchema)
  end

  it 'inherits predicates' do
    expect(schema).to respond_to(:email?)
  end

  it 'inherits rules' do
    expect(schema.(name: nil).messages).to eql(
      name: ['must be filled'], email: ['is missing', 'must be an email']
    )
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
dry-validation-0.9.5 spec/integration/schema/defining_base_schema_spec.rb
dry-validation-0.9.4 spec/integration/schema/defining_base_schema_spec.rb
dry-validation-0.9.3 spec/integration/schema/defining_base_schema_spec.rb
dry-validation-0.9.2 spec/integration/schema/defining_base_schema_spec.rb
dry-validation-0.9.1 spec/integration/schema/defining_base_schema_spec.rb
dry-validation-0.9.0 spec/integration/schema/defining_base_schema_spec.rb