diff --git a/EPAServeur.Tests/Services/CollaborateurServiceTests.cs b/EPAServeur.Tests/Services/CollaborateurServiceTests.cs new file mode 100644 index 0000000..bf66789 --- /dev/null +++ b/EPAServeur.Tests/Services/CollaborateurServiceTests.cs @@ -0,0 +1,101 @@ +using EPAServeur.Context; +using EPAServeur.Exceptions; +using EPAServeur.IServices; +using EPAServeur.Services; +using IO.Swagger.ApiCollaborateur; +using IO.Swagger.DTO; +using Microsoft.EntityFrameworkCore; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace EPAServeur.Tests.Services +{ + [TestFixture] + public class CollaborateurServiceTests + { + #region + private EpContext context; + private ICollaborateurApi collaborateurApi; + #endregion + + #region Setup + [SetUp] + public void Setup() + { + // Utilisation d'une base de données en mémoire + var optionBuider = new DbContextOptionsBuilder() + .UseInMemoryDatabase("server_ep_test") + .Options; + + context = new EpContext(optionBuider); + + context.Database.EnsureDeleted(); + context.Database.EnsureCreated(); + context.SaveChanges(); + + // Ajout du jeu de données pour les tests + DataSeeder.AddNotes(context); + + // Détache les entités du context car la base de données InMemory créé des conflits + // entre les clés primaires lors d'un Update ou d'un Insert + foreach (var entity in context.ChangeTracker.Entries()) + { + entity.State = EntityState.Detached; + } + collaborateurApi = new CollaborateurApi(); + } + #endregion + + #region Test getCollaborateur + + [TestCase("842650db-a548-4472-a3af-4c5fff3c1ab8")] + [TestCase("301ba7f3-095e-4912-8998-a7c942dc5f23")] + [TestCase("4f3fcd23-a1e4-4c9e-afa2-d06ca9216491")] + public async Task GetCollaborateurById_Ok(Guid? id) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + CollaborateurDTO collaborateurDTO = await collaborateurService.GetCollaborateurByIdAsync(id); + + Assert.IsNotNull(collaborateurDTO); + Assert.AreEqual(collaborateurDTO.Id, id); + } + + [TestCase("creola.nicolas@apside-groupe.com")] + [TestCase("lamar.rousseau@apside-groupe.com")] + [TestCase("coty.lemoine@apside-groupe.com")] + public async Task GetCollaborateurByMail_Ok(string mail) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + CollaborateurDTO collaborateurDTO = await collaborateurService.GetCollaborateurByMailAsync(mail); + + Assert.IsNotNull(collaborateurDTO); + Assert.AreEqual(collaborateurDTO.MailApside, mail); + } + + [TestCase("006226f6-51b2-4a02-a302-7447f7fccc04")] + [TestCase("e5d36da4-df16-4d19-8a11-1ba2f6efc80c")] + [TestCase("92b29b9c-40a4-4aa0-9412-bc97a379e52f")] + public async Task GetCollaborateurById_CollaborateurNotFound(Guid? id) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + + AsyncTestDelegate exception = () => collaborateurService.GetCollaborateurByIdAsync(id); + Assert.ThrowsAsync(typeof(CollaborateurNotFoundException), exception); + } + + [TestCase("nicolas@apside.fr")] + [TestCase("rousseau@apside.fr")] + [TestCase("lemoine@apside.fr")] + public async Task GetCollaborateurByMail_CollaborateurNotFound(string mail) + { + ICollaborateurService collaborateurService = new CollaborateurService(collaborateurApi, context); + AsyncTestDelegate exception = () => collaborateurService.GetCollaborateurByMailAsync(mail); + Assert.ThrowsAsync(typeof(CollaborateurNotFoundException), exception); + } + #endregion + + } +}