From 9c9be162799294e3adfe97ecf44133869c034cf7 Mon Sep 17 00:00:00 2001 From: Damien NORTIER Date: Wed, 27 Mar 2024 10:10:43 +0100 Subject: [PATCH] ajout de la documentation concernant la partie API. A finir (parler de la classe Unit) --- README.md | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) diff --git a/README.md b/README.md index 22e784c..e024c52 100755 --- a/README.md +++ b/README.md @@ -79,4 +79,161 @@ Ce projet suivra les conventions de nommage des commits mentionnées précédemm Nécessite un fichier Config_DB.php pour fonctionner, n'hésitez pas à nous le demander. +## API ASP.NET + + Comme dit, cette partie est sur cette branche. La solution et les projets se situent dans le dossier WebApi. + J'ai été trop ambitieux, je pensais aller plus rapidement en codant toute l'application d'abord puis en testant. J'ai donc codé tout le projet, cependant, je n'ai eu le temps + de tester que les managers d'une answer. + Ce manque de temps est notamment dû à des erreurs incomprisent et à une mauvaise injection de dépendance (et aussi car nous n'avions pas beaucoup d'heure de SAE). + + ### voici comment s'organise le projet : + ```plantuml + @startuml + hide circle + allowmixing + skinparam classAttributeIconSize 0 + skinparam classBackgroundColor #ffffb9 + skinparam classBorderColor #800000 + skinparam classArrowColor #800000 + skinparam classFontColor #black + skinparam classFontName Tahoma + + title XXX est à remplacer par le nom de la classe + + file API + package WebAPI{ + package Controllers{ + class XXXController + class FrontController + } + } + + API .> FrontController + FrontController -> XXXController + XXXController -> Unit + + note top of Unit + dans le package WebAPI (c'est + juste que si je le met dedans, + le diagramme est mal ordonné) + end note + + package ManagerInterfaces{ + class IXXXManager + } + + package ServiceManagers{ + class XXXServiceManager + } + + package DTOs{ + class XXXDto + } + + IXXXManager <-- XXXServiceManager : T <- XXXDto + Unit -> XXXServiceManager + XXXServiceManager -.> XXXDto + + package DataManagers{ + class XXXDataManager + } + + package Model{ + class XXX + } + + IXXXManager <-- XXXDataManager : T <- XXX + XXXServiceManager -> XXXDataManager + XXXDataManager -.> XXX + + package EntityManagers{ + class XXXEntityManager + } + + package Entities{ + class XXXEntity + } + + package OrderCriterias{ + class XXXOrderCriteria + } + + IXXXManager -> XXXOrderCriteria + + note right of XXXOrderCriteria + bien sûr, cette classe n'est + pas utilisée par l'interface + mais par ces filles. Mais + pour une raison de lisibilité, + la flèche part volontairement + de l'interface. + end note + + IXXXManager <-- XXXEntityManager : T <- XXXEntity + XXXDataManager -> XXXEntityManager + XXXEntityManager -.> XXXEntity + + artifact DbContext + + Class MyDbContext{ + -- + + Ctr + + Ctr(options : DbContextOptions) + + {override} OnConfiguring(options : DbContextOptionsBuilder) + } + + database database + + DbContext <|-- MyDbContext + XXXEntityManager -> MyDbContext + MyDbContext --> Entities : DbSet pour chaque entité + MyDbContext -> database + + package ExtensionsClassLibrairie{ + class XXXExtensionMethods + } + + XXXDto <-- XXXExtensionMethods + XXX <-- XXXExtensionMethods + XXXEntity <-- XXXExtensionMethods + + package StubbedDbContextLibrary{ + class StubbedDbContext + } + + MyDbContext <|---- StubbedDbContext + + package FakeDatas{ + class fakeXXX{ + + {static} datas + } + } + + note right of fakeXXX + Bon, là, je me suis + trompé sur le nom + (sachant que les + fichiers s'appellent + fake-XXXs) + end note + + StubbedDbContext -> FakeDatas + @enduml + ``` + ***je n'est pas mis les tests car si je les mettaient, le diagramme devenait illisible mais voici le détaille de ces derniers :*** + - Chaque test utilise les classes "MyDbContext" (pour tester l'ajout) et "StubbedDbContext" (pour le reste). + - Le test "TestDataManagers" teste la bonne transcription des data managers, + - Le test "TestEntityManagers" teste le bon "requêtage" des entity managers, + - Le test "TestServiceManagers" teste la bonne transcription des service managers. + - Chaque test est divisé en plusieurs fonctions : + - une fonction TestXXX pour tester le manager de la classe XXX (appel les autres fonctions) + - une fonction TestFXXX pour tester chaque méthode 'F' du manager de la classe XXX + - une fonction Test appelant les fonctions TestXXX + - le programme construit un StubbedDbContext puis appel la méthode 'Test' + + ### concernant la documentation : + - toutes les classes sont documentées + - les managers ne sont pas documentés (j'ai décidé de documenté juste les interfaces car les documentations des managers auraient été similaires). + - les tests sont moins documentés que le reste + par GUITARD Maxence, VAN BRABRANDT Jade, DUCOURTHIAL Jérémy, CALATAYUD Yvan, NORTIER Damien \ No newline at end of file