Tests unitaires models/routes (LoopbackModelTester)
==
Documentation de tests unitaires en générale: 
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"
}
}
}
```