Tests unitaires models/routes (LoopbackModelTester) == Documentation de tests unitaires en générale: ![Unit test](./unit-test.md) Nommage == En règle générale le nom du test doit comporter la déscription de **l'unité** de travail ensuite le pattern 'should' (résultat attendu) et optionnelement, 'when' qui décrit un scénario/context. **Pattern à suivre sur loopbackModelTester** ``` [Model] route: functionnal name (expect results) when context ``` ## Détail | Composant | Description | | -------- | -------- | | Model | Nom du model | | route| Nom de la route (items, getCurrentUser, login ...) | | functionnal name | Description d'un point de vue fonctionnel, le résultat attendu mais pour **l'utilisateur de l'API** | |expect results| Résultats en terme technique, ce qui prouve que le test passe | |context | Paramètres, environnement, contraintes nécessaires pour effectuer ce test| ## Exemples ``` [User] login: admin authenticated with success (http status should be 200) [Zindic] getGraphData: absence of color (couleur should be equal GRIS) when date is invalid [Item] items: items has comments (items should have comments array) ``` ## Patterns de 'expect results' Exemples :+1: - should be (type string, array ...) - should be equal (égalité pour une propriété d'objet) - shoud have/property Types de test sur les routes == 3 types de tests sur les réponses des routes: - Etats des réponses - Structure de données - Valeur de données ## Etats des réponses Vérification de: - Accès, authorisations aux ressources - Erreurs client/serveur Exemple: ```= [User] login: admin authenticated with success (http status should be equal 200) ``` ```json= "expect": { "statusCode": 401 } ``` On test l'authentification et donc une réponse http de 200 ## Structure de données Vérification de: - Présence/absence d'une propriété dans le body de la réponse - Type d'une propriété [X] (array, object, number ...) Exemple: ```= [Item] items: items has comments (items should have comments array) ``` ```json= "expect": { "properties": { "response[0].comments": { "type": "array" } } } ``` ## Valeur de données Vérification de: - Valeur d'une propriété Exemple: ```= [Zindic] getGraphData: absence of color (couleur should be equal GRIS) when date is invalid ``` ```json= "expect": { "properties": { "couleur": { "value": "GRIS" } } } ```