A progressive Node.js framework for building efficient and scalable server-side applications.
Ce projet a été créée pour le cours de Test unitaire et foncitonnel de la 4IW3 de l'ESGI. Il utilise NestJs, un puissant framework backend utilisant NodeJS et Typescript : Nest framework TypeScript starter repository.
Conformément aux best practices fournis par la documentation de NestJS, les fichiers de test unitaire sont à placer au plus prêt des classes testées. Il s'agit de tous les fichiers se terminant par *.spec.ts.
Toujours conformément aux best practices du framework, les données circulent dans le back sous forme de DTO : des class mimant les class des entités qui persisteront dans la base de données. NestJS recommandant l'utilisation de class-validator, un framework permettant une vérification automatique des propriétés selon un schéma fourni. Nous l'avons directement intégré aux DTO. En voici un exemple :
// DTO pour la création d'un utilisateur
export class CreateUserDto {
@IsUUID('all', { // Décorateur de class-validator vérifiant si la propriété "id" est un uuid
message: Constants.ERROR_MSG_IS_UUID, // Surchage du message d'erreur
})
@IsString({ // Décorateur de class-validator vérifiant si la propriété "id" est un string
message: Constants.ERROR_MSG_IS_STRING, // Surchage du message d'erreur
})
@IsNotEmpty({ //Décorateur de class-validator vérifiant si la propriété "id" n'est pas vide
message: Constants.ERROR_MSG_IS_NOT_EMPTY, // Surchage du message d'erreur
})
id: string;
@IsEmail(
{ allow_display_name: false }, // Option, spécifique à ce décorator
{
message: Constants.ERROR_MSG_IS_EMAIL,
},
)
@IsString({
message: Constants.ERROR_MSG_IS_STRING,
})
@IsNotEmpty({
message: Constants.ERROR_MSG_IS_NOT_EMPTY,
})
email: string;
...
@IsUserHaveMinimumAge({ // Custom @ pour une validation personnalisée de la propriété "birthDate"
message: Constants.ERROR_MSG_USER_WRONG_AGE,
})
@IsDate({
message: Constants.ERROR_MSG_IS_DATE,
})
@IsNotEmpty({
message: Constants.ERROR_MSG_IS_NOT_EMPTY,
})
birthDate: Date;
@IsOptional()
todolist: Todolist;
// Constructeur générique
constructor(user: Partial<User>) {
Object.assign(this, user);
}
}
$ npm install
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
# unit tests
$ npm run test
- LIMA Milan
- JACQUENET Jean Christophe
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
- Author - Kamil Myśliwiec
- Website - https://nestjs.com
- Twitter - @nestframework
Nest is MIT licensed.