From 436de28bac9247ae026eb3e33d5a4e989492e595 Mon Sep 17 00:00:00 2001 From: Hiroki Horiuchi Date: Wed, 5 Feb 2020 18:23:01 +0900 Subject: [PATCH] fix: the bug of implementation of #386 --- src/core/schemaConvertor.ts | 4 ++-- test/simple_schema_test.ts | 2 +- .../apimeta/_expected.d.ts | 4 ++-- .../openapi-v3/empty_response/_expected.d.ts | 7 ++++++ .../empty_response/empty_response.yaml | 22 +++++++++++++++++++ .../petstore-no-namespace/_expected.d.ts | 12 +++++----- 6 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 test/snapshots/openapi-v3/empty_response/_expected.d.ts create mode 100644 test/snapshots/openapi-v3/empty_response/empty_response.yaml diff --git a/src/core/schemaConvertor.ts b/src/core/schemaConvertor.ts index 753333fb..9691b745 100644 --- a/src/core/schemaConvertor.ts +++ b/src/core/schemaConvertor.ts @@ -84,7 +84,7 @@ export default class SchemaConvertor { public startInterfaceNest(id: SchemaId): void { const processor = this.processor; - if (processor.indentLevel === 0 && this.ns) { + if (processor.indentLevel === 0 && (this.ns == null || this.ns.length > 0)) { processor.output('declare '); } else { processor.output('export '); @@ -100,7 +100,7 @@ export default class SchemaConvertor { public outputExportType(id: SchemaId): void { const processor = this.processor; - if (processor.indentLevel === 0 && this.ns) { + if (processor.indentLevel === 0 && (this.ns == null || this.ns.length > 0)) { processor.output('declare '); } else { processor.output('export '); diff --git a/test/simple_schema_test.ts b/test/simple_schema_test.ts index a247084c..46a4781e 100644 --- a/test/simple_schema_test.ts +++ b/test/simple_schema_test.ts @@ -25,7 +25,7 @@ describe('simple schema test', () => { }; const result = await dtsgenerator({ contents: [schema] }); - const expected = `export interface NoNamespace { + const expected = `declare interface NoNamespace { } `; assert.equal(result, expected, result); diff --git a/test/snapshots/json-schema-draft-04/apimeta/_expected.d.ts b/test/snapshots/json-schema-draft-04/apimeta/_expected.d.ts index f7207ed7..2b215974 100644 --- a/test/snapshots/json-schema-draft-04/apimeta/_expected.d.ts +++ b/test/snapshots/json-schema-draft-04/apimeta/_expected.d.ts @@ -1,13 +1,13 @@ /** * ApiBaseObject of a record */ -export interface ApiBaseObject { +declare interface ApiBaseObject { first?: string; } /** * Metadata of a record */ -export interface ApiMetadata { +declare interface ApiMetadata { serverOperation?: "I" | "U" | "D"; test?: ApiBaseObject; } diff --git a/test/snapshots/openapi-v3/empty_response/_expected.d.ts b/test/snapshots/openapi-v3/empty_response/_expected.d.ts new file mode 100644 index 00000000..2be914a8 --- /dev/null +++ b/test/snapshots/openapi-v3/empty_response/_expected.d.ts @@ -0,0 +1,7 @@ +declare namespace Components { + namespace Schemas { + export interface Object { + id?: string; + } + } +} diff --git a/test/snapshots/openapi-v3/empty_response/empty_response.yaml b/test/snapshots/openapi-v3/empty_response/empty_response.yaml new file mode 100644 index 00000000..b63a3a9c --- /dev/null +++ b/test/snapshots/openapi-v3/empty_response/empty_response.yaml @@ -0,0 +1,22 @@ +openapi: "3.0.2" +info: + title: empty response + version: v0.1 +components: + schemas: + object: + type: object + properties: + id: + type: string + responses: + created: + description: 'object created' +paths: + post: + requestBody: + application/json: + $ref: '#/components/schemas/object' + responses: + 204: + $ref: '#/components/responses/created' diff --git a/test/snapshots/openapi-v3/petstore-no-namespace/_expected.d.ts b/test/snapshots/openapi-v3/petstore-no-namespace/_expected.d.ts index f0b8cf8e..a40ee37e 100644 --- a/test/snapshots/openapi-v3/petstore-no-namespace/_expected.d.ts +++ b/test/snapshots/openapi-v3/petstore-no-namespace/_expected.d.ts @@ -1,8 +1,8 @@ -declare interface Error { +export interface Error { code: number; // int32 message: string; } -declare interface NewPet { +export interface NewPet { name: string; tag?: string; } @@ -11,19 +11,19 @@ declare namespace Parameters { export type Limit = number; // int32 export type Tags = string[]; } -declare interface PathParameters { +export interface PathParameters { id: Parameters.Id; // int64 } -declare interface Pet { +export interface Pet { name: string; tag?: string; id: number; // int64 } -declare interface QueryParameters { +export interface QueryParameters { tags?: Parameters.Tags; limit?: Parameters.Limit; // int32 } -declare type RequestBody = NewPet; +export type RequestBody = NewPet; declare namespace Responses { export type $200 = Pet; export type Default = Error;