diff --git a/app/templates/nestjsMongoose/Dtos/__name__Dto.ts.txt b/app/templates/nestjsMongoose/Dtos/__name__Dto.ts.txt index 7a2ca40..a08466b 100644 --- a/app/templates/nestjsMongoose/Dtos/__name__Dto.ts.txt +++ b/app/templates/nestjsMongoose/Dtos/__name__Dto.ts.txt @@ -1,21 +1,17 @@ -import * as Joi from 'joi' // import { ApiProperty } from '@nestjs/swagger' +import { <%= namePascal %>Validator } from 'app/Validators/<%= namePascal %>Validator' export class Create<%= namePascal %>Dto { - // Schema validation - static schema = Joi.object({ - // Props in here - }) + static type = 'createSchema' + static validator = <%= namePascal %>Validator // @ApiProperty() // <%= namePascal %> Props in here } export class Update<%= namePascal %>Dto { - // Schema validation - static schema = Joi.object({ - // Props in here - }) + static type = 'updateSchema' + static validator = <%= namePascal %>Validator // @ApiProperty() // <%= namePascal %> Props in here diff --git a/app/templates/nestjsMongoose/E2E/__name__/store.spec.ts.txt b/app/templates/nestjsMongoose/E2E/__name__/store.spec.ts.txt index e92a8e4..8b49c24 100644 --- a/app/templates/nestjsMongoose/E2E/__name__/store.spec.ts.txt +++ b/app/templates/nestjsMongoose/E2E/__name__/store.spec.ts.txt @@ -24,7 +24,7 @@ describe('\n[E2E] <%= namePascal %> 🧱', () => { expect(body.data.name).toBe(payload.name) }) - // Implement all properties in app/Contracts/Dtos/<%= namePascal %>Dto.ts + // Implement all properties in app/Validators/<%= namePascal %>Validator.ts // And create tests to validate if the schema validator are working well. // it('should throw validation errors when trying to create a <%= nameCamel %> with validation errors', async () => { @@ -38,9 +38,15 @@ describe('\n[E2E] <%= namePascal %> 🧱', () => { // // expect(body.status).toBe(status) // expect(body.error.message).toStrictEqual({ - // name: 'Validation Error', + // name: 'Unprocessable Entity Error', // statusCode: status, - // validations: ['"name" is required'], + // message: [ + // { + // field: 'name', + // message: 'required validation failed on name', + // validation: 'required', + // }, + // ], // }) // }) }) diff --git a/app/templates/nestjsMongoose/E2E/__name__/update.spec.ts.txt b/app/templates/nestjsMongoose/E2E/__name__/update.spec.ts.txt index a6e8e4b..15652a8 100644 --- a/app/templates/nestjsMongoose/E2E/__name__/update.spec.ts.txt +++ b/app/templates/nestjsMongoose/E2E/__name__/update.spec.ts.txt @@ -51,7 +51,7 @@ describe('\n[E2E] <%= namePascal %> 🛠', () => { }) }) - // Implement all properties in app/Contracts/Dtos/<%= namePascal %>Dto.ts + // Implement all properties in app/Validators/<%= namePascal %>Validator.ts // And create tests to validate if the schema validator are working well. // it('should throw validation errors when trying to update a <%= nameCamel %> with validation errors', async () => { @@ -65,9 +65,15 @@ describe('\n[E2E] <%= namePascal %> 🛠', () => { // // expect(body.status).toBe(status) // expect(body.error.message).toStrictEqual({ - // name: 'Validation Error', + // name: 'Unprocessable Entity Error', // statusCode: status, - // validations: ['"name" must be a string'], + // message: [ + // { + // field: 'name', + // message: 'string validation failed on name', + // validation: 'string', + // }, + // ], // }) // }) }) diff --git a/app/templates/nestjsMongoose/__name__Validator.ts.txt b/app/templates/nestjsMongoose/__name__Validator.ts.txt new file mode 100644 index 0000000..591ef18 --- /dev/null +++ b/app/templates/nestjsMongoose/__name__Validator.ts.txt @@ -0,0 +1,17 @@ +import { Injectable } from '@nestjs/common' +import { Validator } from '@secjs/validator' + +@Injectable() +export class <%= namePascal %>Validator extends Validator { + createSchema = () => { + return { + name: 'string|required', + } + } + + updateSchema = () => { + return { + name: 'string', + } + } +} diff --git a/app/templates/nestjsPrismaOrm/Dtos/__name__Dto.ts.txt b/app/templates/nestjsPrismaOrm/Dtos/__name__Dto.ts.txt index 7a2ca40..a08466b 100644 --- a/app/templates/nestjsPrismaOrm/Dtos/__name__Dto.ts.txt +++ b/app/templates/nestjsPrismaOrm/Dtos/__name__Dto.ts.txt @@ -1,21 +1,17 @@ -import * as Joi from 'joi' // import { ApiProperty } from '@nestjs/swagger' +import { <%= namePascal %>Validator } from 'app/Validators/<%= namePascal %>Validator' export class Create<%= namePascal %>Dto { - // Schema validation - static schema = Joi.object({ - // Props in here - }) + static type = 'createSchema' + static validator = <%= namePascal %>Validator // @ApiProperty() // <%= namePascal %> Props in here } export class Update<%= namePascal %>Dto { - // Schema validation - static schema = Joi.object({ - // Props in here - }) + static type = 'updateSchema' + static validator = <%= namePascal %>Validator // @ApiProperty() // <%= namePascal %> Props in here diff --git a/app/templates/nestjsPrismaOrm/E2E/__name__/store.spec.ts.txt b/app/templates/nestjsPrismaOrm/E2E/__name__/store.spec.ts.txt index e92a8e4..f44013b 100644 --- a/app/templates/nestjsPrismaOrm/E2E/__name__/store.spec.ts.txt +++ b/app/templates/nestjsPrismaOrm/E2E/__name__/store.spec.ts.txt @@ -38,9 +38,15 @@ describe('\n[E2E] <%= namePascal %> 🧱', () => { // // expect(body.status).toBe(status) // expect(body.error.message).toStrictEqual({ - // name: 'Validation Error', + // name: 'Unprocessable Entity Error', // statusCode: status, - // validations: ['"name" is required'], + // message: [ + // { + // field: 'name', + // message: 'required validation failed on name', + // validation: 'required', + // }, + // ], // }) // }) }) diff --git a/app/templates/nestjsPrismaOrm/E2E/__name__/update.spec.ts.txt b/app/templates/nestjsPrismaOrm/E2E/__name__/update.spec.ts.txt index a6e8e4b..15652a8 100644 --- a/app/templates/nestjsPrismaOrm/E2E/__name__/update.spec.ts.txt +++ b/app/templates/nestjsPrismaOrm/E2E/__name__/update.spec.ts.txt @@ -51,7 +51,7 @@ describe('\n[E2E] <%= namePascal %> 🛠', () => { }) }) - // Implement all properties in app/Contracts/Dtos/<%= namePascal %>Dto.ts + // Implement all properties in app/Validators/<%= namePascal %>Validator.ts // And create tests to validate if the schema validator are working well. // it('should throw validation errors when trying to update a <%= nameCamel %> with validation errors', async () => { @@ -65,9 +65,15 @@ describe('\n[E2E] <%= namePascal %> 🛠', () => { // // expect(body.status).toBe(status) // expect(body.error.message).toStrictEqual({ - // name: 'Validation Error', + // name: 'Unprocessable Entity Error', // statusCode: status, - // validations: ['"name" must be a string'], + // message: [ + // { + // field: 'name', + // message: 'string validation failed on name', + // validation: 'string', + // }, + // ], // }) // }) }) diff --git a/app/templates/nestjsPrismaOrm/__name__Validator.ts.txt b/app/templates/nestjsPrismaOrm/__name__Validator.ts.txt new file mode 100644 index 0000000..591ef18 --- /dev/null +++ b/app/templates/nestjsPrismaOrm/__name__Validator.ts.txt @@ -0,0 +1,17 @@ +import { Injectable } from '@nestjs/common' +import { Validator } from '@secjs/validator' + +@Injectable() +export class <%= namePascal %>Validator extends Validator { + createSchema = () => { + return { + name: 'string|required', + } + } + + updateSchema = () => { + return { + name: 'string', + } + } +} diff --git a/app/templates/nestjsTypeOrm/Dtos/__name__Dto.ts.txt b/app/templates/nestjsTypeOrm/Dtos/__name__Dto.ts.txt index 7a2ca40..a08466b 100644 --- a/app/templates/nestjsTypeOrm/Dtos/__name__Dto.ts.txt +++ b/app/templates/nestjsTypeOrm/Dtos/__name__Dto.ts.txt @@ -1,21 +1,17 @@ -import * as Joi from 'joi' // import { ApiProperty } from '@nestjs/swagger' +import { <%= namePascal %>Validator } from 'app/Validators/<%= namePascal %>Validator' export class Create<%= namePascal %>Dto { - // Schema validation - static schema = Joi.object({ - // Props in here - }) + static type = 'createSchema' + static validator = <%= namePascal %>Validator // @ApiProperty() // <%= namePascal %> Props in here } export class Update<%= namePascal %>Dto { - // Schema validation - static schema = Joi.object({ - // Props in here - }) + static type = 'updateSchema' + static validator = <%= namePascal %>Validator // @ApiProperty() // <%= namePascal %> Props in here diff --git a/app/templates/nestjsTypeOrm/E2E/__name__/store.spec.ts.txt b/app/templates/nestjsTypeOrm/E2E/__name__/store.spec.ts.txt index e92a8e4..8b49c24 100644 --- a/app/templates/nestjsTypeOrm/E2E/__name__/store.spec.ts.txt +++ b/app/templates/nestjsTypeOrm/E2E/__name__/store.spec.ts.txt @@ -24,7 +24,7 @@ describe('\n[E2E] <%= namePascal %> 🧱', () => { expect(body.data.name).toBe(payload.name) }) - // Implement all properties in app/Contracts/Dtos/<%= namePascal %>Dto.ts + // Implement all properties in app/Validators/<%= namePascal %>Validator.ts // And create tests to validate if the schema validator are working well. // it('should throw validation errors when trying to create a <%= nameCamel %> with validation errors', async () => { @@ -38,9 +38,15 @@ describe('\n[E2E] <%= namePascal %> 🧱', () => { // // expect(body.status).toBe(status) // expect(body.error.message).toStrictEqual({ - // name: 'Validation Error', + // name: 'Unprocessable Entity Error', // statusCode: status, - // validations: ['"name" is required'], + // message: [ + // { + // field: 'name', + // message: 'required validation failed on name', + // validation: 'required', + // }, + // ], // }) // }) }) diff --git a/app/templates/nestjsTypeOrm/E2E/__name__/update.spec.ts.txt b/app/templates/nestjsTypeOrm/E2E/__name__/update.spec.ts.txt index a6e8e4b..15652a8 100644 --- a/app/templates/nestjsTypeOrm/E2E/__name__/update.spec.ts.txt +++ b/app/templates/nestjsTypeOrm/E2E/__name__/update.spec.ts.txt @@ -51,7 +51,7 @@ describe('\n[E2E] <%= namePascal %> 🛠', () => { }) }) - // Implement all properties in app/Contracts/Dtos/<%= namePascal %>Dto.ts + // Implement all properties in app/Validators/<%= namePascal %>Validator.ts // And create tests to validate if the schema validator are working well. // it('should throw validation errors when trying to update a <%= nameCamel %> with validation errors', async () => { @@ -65,9 +65,15 @@ describe('\n[E2E] <%= namePascal %> 🛠', () => { // // expect(body.status).toBe(status) // expect(body.error.message).toStrictEqual({ - // name: 'Validation Error', + // name: 'Unprocessable Entity Error', // statusCode: status, - // validations: ['"name" must be a string'], + // message: [ + // { + // field: 'name', + // message: 'string validation failed on name', + // validation: 'string', + // }, + // ], // }) // }) }) diff --git a/app/templates/nestjsTypeOrm/__name__Validator.ts.txt b/app/templates/nestjsTypeOrm/__name__Validator.ts.txt new file mode 100644 index 0000000..591ef18 --- /dev/null +++ b/app/templates/nestjsTypeOrm/__name__Validator.ts.txt @@ -0,0 +1,17 @@ +import { Injectable } from '@nestjs/common' +import { Validator } from '@secjs/validator' + +@Injectable() +export class <%= namePascal %>Validator extends Validator { + createSchema = () => { + return { + name: 'string|required', + } + } + + updateSchema = () => { + return { + name: 'string', + } + } +} diff --git a/package.json b/package.json index f18ed25..3138609 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "generator-secjs", - "version": "1.2.3", + "version": "1.2.4", "description": "🧬 Generator for any NodeJS Project or Framework", "main": "app/index.js", "scripts": { diff --git a/tests/nestjsMongoose.spec.js b/tests/nestjsMongoose.spec.js index 8061fc1..f0aac80 100644 --- a/tests/nestjsMongoose.spec.js +++ b/tests/nestjsMongoose.spec.js @@ -21,6 +21,7 @@ describe('\n NestJS Mongoose 😸', () => { './Foo/BarFactory.ts', './Foo/Dtos/BarDto.ts', './Foo/BarResource.ts', + './Foo/BarValidator.ts', './Foo/BarRepository.ts', './Foo/BarController.ts', './Foo/E2E/Bar/delete.spec.ts', diff --git a/tests/nestjsPrismaOrm.spec.js b/tests/nestjsPrismaOrm.spec.js index 0dbb40c..4f5b2a4 100644 --- a/tests/nestjsPrismaOrm.spec.js +++ b/tests/nestjsPrismaOrm.spec.js @@ -20,6 +20,7 @@ describe('\n NestJS PrismaORM 😸', () => { './Foo/BarFactory.ts', './Foo/Dtos/BarDto.ts', './Foo/BarResource.ts', + './Foo/BarValidator.ts', './Foo/BarController.ts', './Foo/BarRepository.ts', './Foo/E2E/Bar/delete.spec.ts', diff --git a/tests/nestjsTypeOrm.spec.js b/tests/nestjsTypeOrm.spec.js index c5c52e3..3f332b2 100644 --- a/tests/nestjsTypeOrm.spec.js +++ b/tests/nestjsTypeOrm.spec.js @@ -21,6 +21,7 @@ describe('\n NestJS TypeORM 😸', () => { './Foo/BarFactory.ts', './Foo/Dtos/BarDto.ts', './Foo/BarResource.ts', + './Foo/BarValidator.ts', './Foo/BarController.ts', './Foo/BarRepository.ts', './Foo/E2E/Bar/delete.spec.ts',