From b9c93c7061ddf17cbd6e1dae0c71ee6d80149f5c Mon Sep 17 00:00:00 2001 From: craigmc08 Date: Tue, 16 Jul 2019 16:09:54 -0400 Subject: [PATCH] Add test for new allOf circular detection case --- src/services/__tests__/OpenAPIParser.test.ts | 8 +++ .../__tests__/fixtures/allOfCircular.json | 51 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/services/__tests__/fixtures/allOfCircular.json diff --git a/src/services/__tests__/OpenAPIParser.test.ts b/src/services/__tests__/OpenAPIParser.test.ts index df2f9f16..0d9a7b8a 100644 --- a/src/services/__tests__/OpenAPIParser.test.ts +++ b/src/services/__tests__/OpenAPIParser.test.ts @@ -12,5 +12,13 @@ describe('Models', () => { parser = new OpenAPIParser(spec, undefined, opts); expect(parser.mergeAllOf(spec.components.schemas.test)).toMatchSnapshot(); }); + + test('should not mark as circular when multiple schemas in allOf use the same ref', () => { + const spec = require('./fixtures/allOfCircular.json'); + parser = new OpenAPIParser(spec, undefined, opts); + expect( + parser.mergeAllOf(spec.components.schemas.test).properties.object['x-circular-ref'], + ).toEqual(undefined); + }); }); }); diff --git a/src/services/__tests__/fixtures/allOfCircular.json b/src/services/__tests__/fixtures/allOfCircular.json new file mode 100644 index 00000000..87d618f4 --- /dev/null +++ b/src/services/__tests__/fixtures/allOfCircular.json @@ -0,0 +1,51 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "1.0", + "title": "Foo" + }, + "components": { + "schemas": { + "BaseObj": { + "type": "object", + "properties": { + "test": { + "type": "string" + } + } + }, + "ExtendedObj": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseObj" + }, + { + "description": "Extended" + } + ] + }, + "Base": { + "type": "object", + "properties": { + "object": { + "$ref": "#/components/schemas/BaseObj" + } + } + }, + "test": { + "allOf": [ + { + "$ref": "#/components/schemas/Base" + }, + { + "properties": { + "object": { + "$ref": "#/components/schemas/ExtendedObj" + } + } + } + ] + } + } + } +}