@frostup/swr-request-generator
Version:
A tool for generating TypeScript code and interface from swagger by using SWR and axios as client.
169 lines (164 loc) • 7.03 kB
text/typescript
import { DefinitionsResolver } from "../DefinitionsResolver";
import openAPI from "./mock-data/openAPI.json";
describe("DefinitionsResolver", () => {
it("should generate correct definitions", () => {
expect(DefinitionsResolver.of((openAPI as any).components).scanDefinitions().resolvedDefinitions).toEqual(
expectedDefinitions,
);
});
it("should generate correct declarations", () => {
expect(
DefinitionsResolver.of((openAPI as any).components)
.scanDefinitions()
.toDeclarations(),
).toEqual(expectedDeclarations);
});
});
const expectedDefinitions = {
AttachmentBO: {
"authorName?": "string",
"createdDate?": "number",
"fileName?": "string",
"id?": "string",
"mimeType?": "string",
"path?": "string",
},
BookDetailVo: {
"attachment?": "IScheduleVo",
"authorName?": "string",
"createdDate?": "number",
"fileName?": "string",
"id?": "string",
"mimeType?": "string",
"path?": "string",
"type?": "BookDetailVoType#EnumTypeSuffix",
},
"BookDetailVoType#EnumTypeSuffix": ["INTERVENTION_RUN", "CASE_CREATION_DATE"],
BookVO: {
"address?": "string | null",
"price?": "string",
},
BookingResponse: {
data: "IDocumentVo",
"errors?": "IErrorInfo[]",
},
DocumentVO: {
"attachment?": "IBookDetailVo",
"authorName?": "string",
"createdDate?": "number",
"id?": "string",
"note?": "string",
"title?": "string",
},
ErrorInfo: {
"errorMessage?": "string",
},
File: {
"absolute?": "boolean",
"absoluteFile?": "IFile",
"absolutePath?": "string",
"canonicalFile?": "IFile",
"canonicalPath?": "string",
"directory?": "boolean",
"executable?": "boolean",
"file?": "boolean",
"freeSpace?": "number",
"hidden?": "boolean",
"lastModified?": "number",
"name?": "string",
"parent?": "string",
"parentFile?": "IFile",
"path?": "string",
"readable?": "boolean",
"totalSpace?": "number",
"usableSpace?": "number",
"writable?": "boolean",
},
FileUploadReq: {
file: "FormData",
},
InputStream: "object",
Resource: {
"description?": "string",
"file?": "IFile | null",
"filename?": "string",
"filename_with_underscores?": "string",
"inputStream?": "IInputStream",
"open?": "boolean",
"readable?": "boolean",
"uri?": "IUri",
"url?": "IUrl",
},
ScheduleVO: {
"schedules?": "IBookVo[][] | null",
"shiftId?": "string",
"team?": "string",
},
StatusFormData: {},
URI: {
"absolute?": "boolean",
"authority?": "string",
"fragment?": "string",
"host?": "string",
"opaque?": "boolean",
"path?": "string",
"port?": "number",
"query?": "string",
"rawAuthority?": "string",
"rawFragment?": "string",
"rawPath?": "string",
"rawQuery?": "string",
"rawSchemeSpecificPart?": "string",
"rawUserInfo?": "string",
"scheme?": "string",
"schemeSpecificPart?": "string",
"userInfo?": "string",
},
URL: {
"authority?": "string",
"content?": "{[key:string]:any}",
"defaultPort?": "number",
"deserializedFields?": "IUrlStreamHandler",
"file?": "string",
"host?": "string",
"path?": "string",
"port?": "number",
"protocol?": "string",
"query?": "string",
"ref?": "string",
"serializedHashCode?": "number",
"userInfo?": "string",
},
URLStreamHandler: "object",
UpdateBookRequest: {
"birthCountry?": "string",
"citizenship?": "string",
"dateOfBirth?": "number",
"employmentStatus?": "string",
"ethnicity?": "string",
"gender?": "string",
"idNumber?": "string",
"idType?": "string",
"roleId?": "string",
"spokenLanguage?": "string[]",
},
};
const expectedDeclarations = [
"export interface IAttachmentBo {\n 'authorName'?: string;\n'createdDate'?: number;\n'fileName'?: string;\n'id'?: string;\n'mimeType'?: string;\n'path'?: string;\n }",
"export interface IBookDetailVo {\n 'attachment'?: IScheduleVo;\n'authorName'?: string;\n'createdDate'?: number;\n'fileName'?: string;\n'id'?: string;\n'mimeType'?: string;\n'path'?: string;\n'type'?: BookDetailVoType;\n }",
'export enum BookDetailVoType {"INTERVENTION_RUN"="INTERVENTION_RUN","CASE_CREATION_DATE"="CASE_CREATION_DATE"}',
"export interface IBookVo {\n 'address'?: string | null;\n'price'?: string;\n }",
"export interface IBookingResponse {\n 'data': IDocumentVo;\n'errors'?: IErrorInfo[];\n }",
"export interface IDocumentVo {\n 'attachment'?: IBookDetailVo;\n'authorName'?: string;\n'createdDate'?: number;\n'id'?: string;\n'note'?: string;\n'title'?: string;\n }",
"export interface IErrorInfo {\n 'errorMessage'?: string;\n }",
"export interface IFile {\n 'absolute'?: boolean;\n'absoluteFile'?: IFile;\n'absolutePath'?: string;\n'canonicalFile'?: IFile;\n'canonicalPath'?: string;\n'directory'?: boolean;\n'executable'?: boolean;\n'file'?: boolean;\n'freeSpace'?: number;\n'hidden'?: boolean;\n'lastModified'?: number;\n'name'?: string;\n'parent'?: string;\n'parentFile'?: IFile;\n'path'?: string;\n'readable'?: boolean;\n'totalSpace'?: number;\n'usableSpace'?: number;\n'writable'?: boolean;\n }",
"export interface IFileUploadReq {\n 'file': FormData;\n }",
"export interface IInputStream {[key:string]:any}",
"export interface IResource {\n 'description'?: string;\n'file'?: IFile | null;\n'filename'?: string;\n'filename_with_underscores'?: string;\n'inputStream'?: IInputStream;\n'open'?: boolean;\n'readable'?: boolean;\n'uri'?: IUri;\n'url'?: IUrl;\n }",
"export interface IScheduleVo {\n 'schedules'?: IBookVo[][] | null;\n'shiftId'?: string;\n'team'?: string;\n }",
"export interface IStatusFormData {[key:string]:any}",
"export interface IUri {\n 'absolute'?: boolean;\n'authority'?: string;\n'fragment'?: string;\n'host'?: string;\n'opaque'?: boolean;\n'path'?: string;\n'port'?: number;\n'query'?: string;\n'rawAuthority'?: string;\n'rawFragment'?: string;\n'rawPath'?: string;\n'rawQuery'?: string;\n'rawSchemeSpecificPart'?: string;\n'rawUserInfo'?: string;\n'scheme'?: string;\n'schemeSpecificPart'?: string;\n'userInfo'?: string;\n }",
"export interface IUrl {\n 'authority'?: string;\n'content'?: {[key:string]:any};\n'defaultPort'?: number;\n'deserializedFields'?: IUrlStreamHandler;\n'file'?: string;\n'host'?: string;\n'path'?: string;\n'port'?: number;\n'protocol'?: string;\n'query'?: string;\n'ref'?: string;\n'serializedHashCode'?: number;\n'userInfo'?: string;\n }",
"export interface IUrlStreamHandler {[key:string]:any}",
"export interface IUpdateBookRequest {\n 'birthCountry'?: string;\n'citizenship'?: string;\n'dateOfBirth'?: number;\n'employmentStatus'?: string;\n'ethnicity'?: string;\n'gender'?: string;\n'idNumber'?: string;\n'idType'?: string;\n'roleId'?: string;\n'spokenLanguage'?: string[];\n }",
];