# Client Poplee.Training
## Arboresseance
```plantuml
@startsalt
{
{T
+back
++ Poplee.Training.Client
+++ Poplee.Training.Client.Abstraction
+++ Poplee.Training.Client.Infra
+++ Poplee.Training.Client.Infra.Test
...
}
}
@endsalt
```
### Poplee.Training.Client.Abstraction
C'est le seul csproj qu'il faut ajouter en dépendance.
C'est le cproj qui exposes toutes les interfaces et les classes qu'on peut utiliser dans Poplee.Talent.
### Poplee.Training.Client.Infra
C'est dans ce cproj qu'on fetch les information depuis Talent.Training et on les rend disponibles à Poplee.Training.Client.Abstraction.
### Poplee.Training.Client.Infra.Test
L'infra est conçue en TDD pour simplifier le développement et fiabiliser la solution.
## Détails techniques
### Swagger Connected Service

Ce plugin VS permet d'auto-generer depuis un fichier openapi le client C#.
Le code qui est auto-géneré est juste intéressant à lire pour s'inspirer dans le bootstrap, mais je ne utilise ni je conseil de l'utiliser directement.
### Moq.Contrib.HttpClient
*"A set of extension methods for mocking HttpClient and IHttpClientFactory with Moq."*
https://github.com/maxkagamine/Moq.Contrib.HttpClient
J'ai eu besoin de cette libraire car moquer des appels http c'est assez galere et je peux ainsi reduire le moq à quelques dizaine de ligne de code, plutot lisibles.
## Etat du projet
- [x] Création des csproj
- [x] Bootstrap suite de tests
- [x] Validation des models via les TU
- [ ] Appel à l'api training-demand
- [ ] Lecture du apptokent dans l'appsetting
- [ ] Peaufiner Poplee.Training.Client.Abstraction