spec/integration/schema/nested_schemas_spec.rb in dry-validation-0.9.3 vs spec/integration/schema/nested_schemas_spec.rb in dry-validation-0.9.4
- old
+ new
@@ -1,5 +1,41 @@
RSpec.describe Schema, 'nested schemas' do
+ context 'with multiple nested schemas' do
+ subject(:schema) do
+ Dry::Validation.Schema do
+ required(:content).schema do
+ required(:meta).schema do
+ required(:version).filled
+ end
+
+ required(:data).schema do
+ required(:city).filled
+ end
+ end
+ end
+ end
+
+ it 'passes when input is valid' do
+ input = {content: {meta: {version: "1.0"}, data: {city: "Canberra"}}}
+ expect(schema.(input)).to be_success
+ end
+
+ it 'fails when one sub-key is missing' do
+ input = {content: {data: {city: "Canberra"}}}
+ expect(schema.(input).messages).to eql(content: {meta: ['is missing']})
+ end
+
+ it 'fails when both sub-keys are missing' do
+ input = {content: {}}
+ expect(schema.(input).messages).to eql(content: {meta: ['is missing'], data: ['is missing']})
+ end
+
+ it 'fails when the deeply nested keys are invalid' do
+ input = {content: {meta: {version: ""}, data: {city: ""}}}
+ expect(schema.(input).messages).to eql(content: {meta: {version: ["must be filled"]}, data: {city: ["must be filled"]}})
+ end
+ end
+
context 'with a 2-level deep schema' do
subject(:schema) do
Dry::Validation.Schema do
required(:meta).schema do
required(:info).schema do