From 86fcbfb60ffb938e7621df1ce13d192a1a9dfa8a Mon Sep 17 00:00:00 2001 From: Alex Varchuk Date: Tue, 24 May 2022 17:19:49 +0300 Subject: [PATCH] fix: if/then/else operators --- src/traverse.js | 3 ++- test/integration.spec.js | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/traverse.js b/src/traverse.js index b8d220d..96f248a 100644 --- a/src/traverse.js +++ b/src/traverse.js @@ -129,7 +129,8 @@ export function traverse(schema, options, spec, context) { if (schema.if && schema.then) { popSchemaStack(seenSchemasStack, context); - return tryInferExample(schema) || traverse(mergeDeep(schema.if, schema.then), options, spec, context); + const { if: ifSchema, then, ...rest } = schema; + return traverse(mergeDeep(rest, ifSchema, then), options, spec, context); } let example = inferExample(schema); diff --git a/test/integration.spec.js b/test/integration.spec.js index a87febd..f279a90 100644 --- a/test/integration.spec.js +++ b/test/integration.spec.js @@ -459,6 +459,7 @@ describe('Integration', function() { it('should support basic if/then/else usage', () => { schema = { type: 'object', + properties: {top: {type: 'number'}}, if: {properties: {foo: {type: 'string', format: 'email'}}}, then: {properties: {bar: {type: 'string'}}}, else: {properties: {baz: {type: 'number'}}}, @@ -467,7 +468,8 @@ describe('Integration', function() { result = OpenAPISampler.sample(schema); expected = { foo: 'user@example.com', - bar: 'string' + bar: 'string', + top: 0, }; expect(result).to.deep.equal(expected); })