class-validator-jsonschema
Version:
Convert class-validator-decorated classes into JSON schema
77 lines (72 loc) • 1.72 kB
text/typescript
// tslint:disable:no-submodule-imports
import { IsString, MinLength, ValidateNested } from 'class-validator'
import { validationMetadatasToSchemas } from '../src'
import { Type } from 'class-transformer'
import { defaultMetadataStorage } from 'class-transformer/storage'
class User {
()
name: string;
}
// @ts-ignore: not referenced
class Post {
(() => {
return String
})
(2, {each: true})
userStatus: Map<string, string>
}
// @ts-ignore: not referenced
class PostWidthUsers {
({each: true})
(() => User)
users: Map<string, User>
}
describe('classValidatorConverter', () => {
it('combines converted class-validator metadata into JSON Schemas', async () => {
const schemas = validationMetadatasToSchemas({
classTransformerMetadataStorage: defaultMetadataStorage,
})
expect(schemas).toEqual({
"User": {
"properties": {
"name": {
"type": "string"
}
},
"type": "object",
"required": [
"name"
]
},
"Post": {
"properties": {
"userStatus": {
"additionalProperties": {
"minLength": 2,
"type": "string"
},
"type": "object"
}
},
"type": "object",
"required": [
"userStatus"
]
},
"PostWidthUsers": {
"properties": {
"users": {
"additionalProperties": {
"$ref": "#/definitions/User"
},
"type": "object"
}
},
"type": "object",
"required": [
"users"
]
}
})
})
})