From 2523a0d9f78c409cca5811a7c089ce048c19e130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Tue, 2 Feb 2021 14:58:26 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20tests=20pour=20les=20m=C3=A9thode?= =?UTF-8?q?s=20de=20tri=20et=20impl=C3=A9mentation=20du=20triattribut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/CollaborateurServiceTests.cs | 182 +++++++++++++++++- EPAServeur/IServices/ICollaborateurService.cs | 1 + EPAServeur/Services/CollaborateurService.cs | 29 ++- 3 files changed, 205 insertions(+), 7 deletions(-) diff --git a/EPAServeur.Tests/Services/CollaborateurServiceTests.cs b/EPAServeur.Tests/Services/CollaborateurServiceTests.cs index fa1e2c3..73b9d1e 100644 --- a/EPAServeur.Tests/Services/CollaborateurServiceTests.cs +++ b/EPAServeur.Tests/Services/CollaborateurServiceTests.cs @@ -101,11 +101,11 @@ namespace EPAServeur.Tests.Services #region Tests GetCollaborateurs Roles - [TestCase("RH")] //9 - [TestCase("Collaborateur")] //7 - [TestCase("Assistant")] //6 - [TestCase("Manager")]//10 - [TestCase("RA")]//5 + [TestCase("RH")] + [TestCase("Collaborateur")] + [TestCase("Assistant")] + [TestCase("Manager")] + [TestCase("RA")] public async Task GetCollaborateurs_UnRole(string role) { ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); @@ -170,5 +170,177 @@ namespace EPAServeur.Tests.Services #endregion + #region Test GetCollaborateurs Tri et Pagination + + [Test] + public async Task GetCollaborateurs_Asc_Desc() + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateursAsc = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 50, "", "", null, null); + IEnumerable collaborateursDesc = await collaborateurService.GetCollaborateursAsync(null, null, false, 1, 50, "", "", null, null); + CollaborateurDTO collaborateurDTOFirstAsc = collaborateursAsc.First(); + CollaborateurDTO collaborateurDTLastAsc = collaborateursAsc.Last(); + CollaborateurDTO collaborateurDTOFirstDesc = collaborateursDesc.First(); + CollaborateurDTO collaborateurDTLastDesc = collaborateursDesc.Last(); + + Assert.AreEqual(collaborateurDTOFirstAsc.Id, collaborateurDTLastDesc.Id); + Assert.AreEqual(collaborateurDTLastAsc.Id, collaborateurDTOFirstDesc.Id); + } + + [TestCase("ma")] + [TestCase("z")] + [TestCase("em")] + [TestCase("")] + public async Task GetCollaborateurs_Texte(string texte) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 50, texte, "", null, null); + string nomprenom, prenomnom; + foreach(CollaborateurDTO collaborateur in collaborateurs) + { + nomprenom = collaborateur.Nom.ToLower() + " " + collaborateur.Prenom.ToLower(); + prenomnom = collaborateur.Prenom.ToLower() + " " + collaborateur.Nom.ToLower(); + Assert.IsTrue(nomprenom.Contains(texte) || prenomnom.Contains(texte)); + } + } + + [TestCase(2015,1,1)] + [TestCase(2016,1,1)] + [TestCase(2017,1,1)] + [TestCase(2018,1,1)] + public async Task GetCollaborateurs_DateDebut(int annee, int mois, int jour) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + DateTime dateDebut = new DateTime(annee, mois, jour); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 50, "", "", dateDebut, null); + foreach(CollaborateurDTO collaborateur in collaborateurs) + { + Assert.IsTrue(collaborateur.DateArrivee >= dateDebut); + } + } + + [TestCase(2020, 12, 31)] + [TestCase(2019, 12, 31)] + [TestCase(2018, 12, 31)] + [TestCase(2017, 12, 31)] + public async Task GetCollaborateurs_DateFin(int annee, int mois, int jour) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + DateTime dateFin = new DateTime(annee, mois, jour); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 50, "", "", null, dateFin); + foreach (CollaborateurDTO collaborateur in collaborateurs) + { + Assert.IsTrue(collaborateur.DateArrivee < dateFin); + } + } + + + [TestCase(2016,1,1,2018,12,31)] + [TestCase(2017,6,1,2017,6,30)] + [TestCase(2019,1,1,2019,12,31)] + public async Task GetCollaborateurs_DateDebutDateFin(int anneeDeb, int moisDeb, int jourDeb, int anneeFin, int moisFin, int jourFin) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + DateTime dateDebut= new DateTime(anneeDeb, moisDeb, jourDeb); + DateTime dateFin = new DateTime(anneeFin, moisFin, jourFin); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 50, "", "", dateDebut, dateFin); + foreach (CollaborateurDTO collaborateur in collaborateurs) + { + Assert.IsTrue(collaborateur.DateArrivee >= dateDebut && collaborateur.DateArrivee < dateFin); + } + } + + + + [TestCase(1,15)] + [TestCase(4,5)] + [TestCase(2,15)] + [TestCase(1,20)] + [TestCase(1,37)] + public async Task GetCollaborateur_Paginaion(int numPage, int parPage) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, numPage, parPage, "", "", null, null); + Assert.AreEqual(collaborateurs.Count(), parPage); + } + + [TestCase(2, 37, 0)] + [TestCase(3, 15, 7)] + [TestCase(8, 5, 2)] + public async Task GetCollaborateur_Paginaion_2(int numPage, int parPage, int res) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, numPage, parPage, "", "", null, null); + Assert.AreEqual(collaborateurs.Count(), res); + } + + [TestCase(0, 4)] + [TestCase(-1, 0)] + [TestCase(-10, -10)] + [TestCase(-10, 20)] + [TestCase(-1, 37)] + public async Task GetCollaborateur_PaginaionValeursParDefaut(int numPage, int parPage) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, numPage, parPage, "", "", null, null); + + if(parPage < 5) + Assert.AreEqual(collaborateurs.Count(), 15); + else + Assert.AreEqual(collaborateurs.Count(), parPage); + } + + + [Test] + public async Task GetCollaborateur_OrderByDateArrive() + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 30, "", "datearrivee", null, null); + DateTime d1, d2; + for(int i = 0; i < collaborateurs.Count() -1; ++i) + { + d1 = collaborateurs.ElementAt(i).DateArrivee.Value; + d2 = collaborateurs.ElementAt(i+1).DateArrivee.Value; + Assert.AreEqual(DateTime.Compare(d1, d2),-1); + } + + } + + + [Test] + public async Task GetCollaborateur_OrderByBU() + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 30, "", "businessunit", null, null); + string bu1, bu2; + for (int i = 0; i < collaborateurs.Count() - 1; ++i) + { + bu1 = collaborateurs.ElementAt(i).BusinessUnit.Nom; + bu2 = collaborateurs.ElementAt(i + 1).BusinessUnit.Nom; + Console.WriteLine(bu1 + " " + bu2); + Assert.IsTrue(string.Compare(bu1, bu2) <= 0); + } + + } + + + [Test] + public async Task GetCollaborateur_OrderByNom() + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + IEnumerable collaborateurs = await collaborateurService.GetCollaborateursAsync(null, null, true, 1, 30, "", "collaborateur", null, null); + string nom1, nom2; + for (int i = 0; i < collaborateurs.Count() - 1; ++i) + { + nom1 = collaborateurs.ElementAt(i).Nom; + nom2 = collaborateurs.ElementAt(i+1).Nom; + Assert.IsTrue(string.Compare(nom1, nom2) <= 0); + } + + } + #endregion + + + } } diff --git a/EPAServeur/IServices/ICollaborateurService.cs b/EPAServeur/IServices/ICollaborateurService.cs index 11ce2e7..96320d8 100644 --- a/EPAServeur/IServices/ICollaborateurService.cs +++ b/EPAServeur/IServices/ICollaborateurService.cs @@ -20,5 +20,6 @@ namespace EPAServeur.IServices Task> GetReferentsPrecedentsEPAsync(Guid? idCollaborateur); + } } diff --git a/EPAServeur/Services/CollaborateurService.cs b/EPAServeur/Services/CollaborateurService.cs index 60e8287..0cdc5e3 100644 --- a/EPAServeur/Services/CollaborateurService.cs +++ b/EPAServeur/Services/CollaborateurService.cs @@ -113,6 +113,10 @@ namespace EPAServeur.Services var task = collaborateurs.Select(c => GetCollaborateurDTOAsync(c, true)); collaborateursDTO = await Task.WhenAll(task); + + + + if (parPage.Value < minParPage || parPage.Value > maxParPage) parPage = defaultParPage; if (numPage.Value <= 0) @@ -126,6 +130,12 @@ namespace EPAServeur.Services collaborateursDTO = TriDates(collaborateursDTO, dateDebut, dateFin); + if (tri != null) + collaborateursDTO = TriAttribut(collaborateursDTO, tri); + + if (asc.HasValue && !asc.Value) + collaborateursDTO = collaborateursDTO.Reverse(); + return collaborateursDTO.Skip(skip).Take(take); } @@ -251,9 +261,24 @@ namespace EPAServeur.Services /// L'attribut sur lequel les données sont triées /// Indique si les données sont rangées dans l'ordre croissant ou non /// Une liste de collaborateur - private IEnumerable TriAttribut(IEnumerable collaborateurs, string tri, bool asc) + private IEnumerable TriAttribut(IEnumerable collaborateurs, string tri) { - throw new NotImplementedException(); + switch(tri) + { + case "datearrivee": + collaborateurs = collaborateurs.OrderBy(c => c.DateArrivee); + break; + case "businessunit": + collaborateurs = collaborateurs.OrderBy(c => c.BusinessUnit.Nom); + break; + case "referent": + collaborateurs = collaborateurs.OrderBy(c => c.Referent.Nom ); + break; + default: + collaborateurs = collaborateurs.OrderBy(c => c.Nom); + break; + } + return collaborateurs; } ///