@@ -24,6 +24,7 @@ const complexTypeArraySchema = require('../schemas/complex-typeArray')
2424const complexDefaultValuesSchema = require ( '../schemas/complex-defaultValues' )
2525const complexAdditionalPropertiesSchema = require ( '../schemas/complex-additionalProperties' )
2626const complexItemsAsArraySchema = require ( '../schemas/complex-itemsAsArray' )
27+ const complexEmbeddedDefinitionsSchema = require ( '../schemas/complex-embeddedDefinitions' )
2728
2829const simpleOpenAPI = require ( '../openAPI/simple' )
2930
@@ -47,6 +48,7 @@ describe('Convertor', () => {
4748 delete require . cache [ require . resolve ( '../schemas/complex-defaultValues' ) ] ;
4849 delete require . cache [ require . resolve ( '../schemas/complex-additionalProperties' ) ] ;
4950 delete require . cache [ require . resolve ( '../schemas/complex-itemsAsArray' ) ] ;
51+ delete require . cache [ require . resolve ( '../schemas/complex-embeddedDefinitions' ) ] ;
5052 convertor = new Convertor ( simpleSchema )
5153 } ) ;
5254
@@ -359,6 +361,27 @@ describe('Convertor', () => {
359361 } )
360362 expect ( valid ) . to . be . true
361363 } ) ;
364+
365+ it ( 'should return a schema valid for OpenAPI v3.0.0 when definitions are deeply embedded' , async function ( ) {
366+ const complexConvertor = new Convertor ( complexEmbeddedDefinitionsSchema )
367+ const components = complexConvertor . convert ( )
368+ const cloned = JSON . parse ( JSON . stringify ( simpleOpenAPI ) )
369+ let valid = await validator . validateInner ( cloned , { } )
370+ expect ( valid ) . to . be . true
371+ Object . assign ( cloned , { components} )
372+ expect ( cloned ) . to . have . property ( 'components' )
373+ expect ( cloned . components ) . to . have . property ( 'schemas' )
374+ expect ( cloned . components . schemas ) . to . have . property ( 'main' )
375+ expect ( cloned . components . schemas . main . properties ) . to . have . property ( 'contact' )
376+ expect ( cloned . components . schemas . main . properties . contact ) . to . not . have . property ( 'definitions' )
377+ expect ( cloned . components . schemas . main . properties ) . to . have . property ( 'clientId' )
378+ expect ( cloned . components . schemas . main . properties ) . to . have . property ( 'credentials' )
379+ valid = await validator . validateInner ( cloned , { } )
380+ . catch ( err => {
381+ console . log ( err )
382+ } )
383+ expect ( valid ) . to . be . true
384+ } ) ;
362385 } ) ;
363386
364387 describe ( 'convert a schema that has definitions that have already been resolved' , ( ) => {
0 commit comments