42 lines
997 B
Ruby
42 lines
997 B
Ruby
# frozen_string_literal: true
|
|
|
|
require "dry/validation/contract"
|
|
require "dry/schema/messages/i18n"
|
|
|
|
RSpec.describe Dry::Validation::Contract, ".inherited" do
|
|
subject(:child_class) do
|
|
Class.new(parent_class) do
|
|
params do
|
|
required(:email).filled(:string)
|
|
end
|
|
|
|
rule(:email) {}
|
|
end
|
|
end
|
|
|
|
let(:parent_class) do
|
|
Class.new(Dry::Validation::Contract) do
|
|
config.messages.backend = :i18n
|
|
|
|
params do
|
|
required(:name).filled(:string)
|
|
end
|
|
|
|
rule(:name) {}
|
|
end
|
|
end
|
|
|
|
it "inherits schema params" do
|
|
expect(child_class.__schema__.key_map.map(&:name).sort).to eql(%w[email name])
|
|
end
|
|
|
|
it "inherits rules" do
|
|
expect(child_class.rules.map(&:keys).sort).to eql([[:email], [:name]])
|
|
end
|
|
|
|
it "inherits configuration" do
|
|
expect(child_class.config.messages.backend).to eql(parent_class.config.messages.backend)
|
|
expect(child_class.config.messages.load_paths).to eql(parent_class.config.messages.load_paths)
|
|
end
|
|
end
|