commit
9949eee8d2
@ -0,0 +1,310 @@ |
||||
using EPAServeur.Context; |
||||
using EPAServeur.Exceptions; |
||||
using EPAServeur.IServices; |
||||
using EPAServeur.Models.Formation; |
||||
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.Linq; |
||||
using System.Threading.Tasks; |
||||
|
||||
namespace EPAServeur.Tests.Services |
||||
{ |
||||
[TestFixture] |
||||
public class ParticipationFormationServiceTests |
||||
{ |
||||
#region Variables |
||||
|
||||
private EpContext epContext; |
||||
private ICollaborateurApi collaborateurApi; |
||||
private ICollaborateurService collaborateurService; |
||||
#endregion |
||||
|
||||
#region Setup |
||||
|
||||
[SetUp] |
||||
public void Setup() |
||||
{ |
||||
// Utilisation d'une base de données en mémoire |
||||
var optionBuider = new DbContextOptionsBuilder<EpContext>() |
||||
.UseInMemoryDatabase("server_ep_test") |
||||
.Options; |
||||
|
||||
epContext = new EpContext(optionBuider); |
||||
collaborateurApi = new CollaborateurApi(); |
||||
collaborateurService = new CollaborateurService(collaborateurApi, epContext); |
||||
epContext.Database.EnsureDeleted(); |
||||
epContext.Database.EnsureCreated(); |
||||
epContext.SaveChanges(); |
||||
|
||||
// Ajout du jeu de données pour les tests |
||||
DataSeeder.AddFormations(epContext); |
||||
|
||||
// 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 epContext.ChangeTracker.Entries()) |
||||
{ |
||||
entity.State = EntityState.Detached; |
||||
} |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
#region Tests GetEvaluationCollaborateurAsync |
||||
[Test] |
||||
public async Task GetEvaluationCollaborateurAsync_PasseEnParamUnIdExistantDansLeJeuDeDonneesFictif_RetourneUneEvaluation() |
||||
{ |
||||
// Arrange |
||||
ParticipationFormationService participationFormationService = new ParticipationFormationService(epContext, collaborateurService); |
||||
int idParticipationFormation = 5; |
||||
// Act |
||||
EvaluationDTO evaluationDTO = await participationFormationService.GetEvaluationCollaborateurAsync(idParticipationFormation); |
||||
|
||||
// Assert |
||||
Assert.AreEqual(idParticipationFormation, evaluationDTO.Id); |
||||
Assert.AreEqual(new DateTime(2020, 5, 25, 14, 0, 0), evaluationDTO.DateDebut); |
||||
Assert.True(evaluationDTO.EstCertifie); |
||||
Assert.AreEqual("Apprendre C# et le développement de logiciels avec WPF", evaluationDTO.Intitule); |
||||
} |
||||
|
||||
[TestCase(-1)] |
||||
[TestCase(0)] |
||||
[TestCase(999999)] |
||||
public void GetEvaluationCollaborateurAsync_PasseEnParamUnIdInexistantDansLeJeuDeDonneesFictif_LeveUneParticipationFormationNotFoundException(long idParticipationFormation) |
||||
{ |
||||
// Arrange |
||||
ParticipationFormationService participationFormationService = new ParticipationFormationService(epContext, collaborateurService); |
||||
|
||||
// Act |
||||
AsyncTestDelegate throwException = () => participationFormationService.GetEvaluationCollaborateurAsync(idParticipationFormation); |
||||
|
||||
// Assert |
||||
Assert.ThrowsAsync(typeof(ParticipationFormationNotFoundException), throwException); |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
#region Tests GetParticipationByCollaborateur |
||||
|
||||
[TestCase("842650db-a548-4472-a3af-4c5fff3c1ab8")] |
||||
[TestCase("4f3fcd23-a1e4-4c9e-afa2-d06ca9216491")] |
||||
public async Task GetParticipationByCollaborateur_PasseDesParamsValides_RetourneDesParticipationsFormations(Guid idCollaborateur) |
||||
{ |
||||
// Arrange |
||||
ParticipationFormationService participationFormationService = new ParticipationFormationService(epContext, collaborateurService); |
||||
|
||||
// Act |
||||
IEnumerable<ParticipationFormationDTO> participationFormationDTOs = await participationFormationService.GetParticipationByCollaborateurAsync(idCollaborateur); |
||||
|
||||
// Assert |
||||
Assert.Less(0, participationFormationDTOs.Count()); |
||||
} |
||||
|
||||
[TestCase("e7820f92-eab1-42f5-ae96-5c16e71ff1e6")] |
||||
[TestCase("b5254c6c-7caa-435f-a4bb-e0cf92559832")] |
||||
public async Task GetFormationsAsync_PasseDesParamsInvalides_RetourneZeroFormation(Guid idCollaborateur) |
||||
{ |
||||
// Arrange |
||||
ParticipationFormationService participationFormationService = new ParticipationFormationService(epContext, collaborateurService); |
||||
|
||||
// Act |
||||
IEnumerable<ParticipationFormationDTO> participationFormationDTOs = await participationFormationService.GetParticipationByCollaborateurAsync(idCollaborateur); |
||||
|
||||
// Assert |
||||
Assert.AreEqual(0, participationFormationDTOs.Count()); |
||||
} |
||||
|
||||
#endregion |
||||
/* |
||||
#region Tests UpdateFormationAsync |
||||
|
||||
[TestCase(1, 2, 2, 1, 1, 2, "Test modification formation", "Apside", "2020-10-31", "2020-11-04")] |
||||
public async Task UpdateFormationAsync_ModifieUneFormationValide_FormationModifieeAvecSucces(long idFormation, int? idMode, int? idStatut, int? idType, int? idOrigine, long? idAgence, string intitule, string organisme, DateTime? dateDebut, DateTime? dateFin) |
||||
{ |
||||
// Arrange |
||||
ModeFormationDTO modeExterne = epContext.ModeFormation.Where(mode => mode.IdModeFormation == idMode) |
||||
.Select(mode => new ModeFormationDTO { Id = mode.IdModeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
StatutFormationDTO statutPlanifie = epContext.StatutFormation.Where(mode => mode.IdStatutFormation == idStatut) |
||||
.Select(mode => new StatutFormationDTO { Id = mode.IdStatutFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
TypeFormationDTO typeELearning = epContext.TypeFormation.Where(mode => mode.IdTypeFormation == idType) |
||||
.Select(mode => new TypeFormationDTO { Id = mode.IdTypeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
OrigineFormationDTO origineFormationCollaborateur = epContext.OrigineFormation.Where(mode => mode.IdOrigineFormation == idOrigine) |
||||
.Select(mode => new OrigineFormationDTO { Id = mode.IdOrigineFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
|
||||
FormationService formationService = new FormationService(epContext, collaborateurService); |
||||
|
||||
FormationDTO formation = await formationService.GetFormationByIdAsync(idFormation); |
||||
|
||||
formation.Intitule = intitule; |
||||
formation.IdAgence = idAgence; |
||||
formation.DateDebut = dateDebut; |
||||
formation.DateFin = dateFin; |
||||
formation.Heure = 2; |
||||
formation.Jour = 1; |
||||
formation.Mode = modeExterne; |
||||
formation.Type = typeELearning; |
||||
formation.Organisme = organisme; |
||||
formation.Origine = origineFormationCollaborateur; |
||||
formation.Statut = statutPlanifie; |
||||
formation.EstCertifiee = false; |
||||
|
||||
|
||||
// Act |
||||
FormationDTO formationModifie = await formationService.UpdateFormationAsync(idFormation, formation); |
||||
|
||||
// Assert |
||||
Assert.IsNotNull(formationModifie); |
||||
Assert.AreEqual(idFormation, formationModifie.Id); |
||||
Assert.AreEqual(formation.Intitule, formationModifie.Intitule); |
||||
Assert.AreEqual(formation.IdAgence, formationModifie.IdAgence); |
||||
Assert.AreEqual(formation.DateDebut, formationModifie.DateDebut); |
||||
Assert.AreEqual(formation.DateFin, formationModifie.DateFin); |
||||
Assert.AreEqual(formation.Heure, formationModifie.Heure); |
||||
Assert.AreEqual(formation.Jour, formationModifie.Jour); |
||||
Assert.AreEqual(formation.Mode, formationModifie.Mode); |
||||
Assert.AreEqual(formation.Type, formationModifie.Type); |
||||
Assert.AreEqual(formation.Organisme, formationModifie.Organisme); |
||||
Assert.AreEqual(formation.Origine, formationModifie.Origine); |
||||
Assert.AreEqual(formation.Statut, formationModifie.Statut); |
||||
Assert.AreEqual(formation.EstCertifiee, formationModifie.EstCertifiee); |
||||
} |
||||
|
||||
[TestCase(1, 1, 1, 3, 1, 1, "Test Formation", "Apside", "2020-10-31", "2020-10-30")] |
||||
[TestCase(1, 0, 1, 3, 1, 1, "Test Formation", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 0, 3, 1, 1, "Test Formation", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 0, 1, 1, "Test Formation", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 0, 1, "Test Formation", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 0, "Test Formation", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 1, "", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 1, "Test Formation", "", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, null, "Test Formation", "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 1, null, "Apside", "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 1, "Test Formation", null, "2020-10-31", "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 1, "Test Formation", "Apside", null, "2020-11-02")] |
||||
[TestCase(1, 1, 1, 3, 1, 1, "Test Formation", "Apside", "2020-10-31", null)] |
||||
public async Task UpdateFormationAsync_ModifieUneFormationAvecDesProprietesInvalides_LeveUneFormationInvalidException(long idFormation, int? idMode, int? idStatut, int? idType, int? idOrigine, long? idAgence, string intitule, string organisme, DateTime? dateDebut, DateTime? dateFin) |
||||
{ |
||||
|
||||
// Arrange |
||||
ModeFormationDTO modeExterne = epContext.ModeFormation.Where(mode => mode.IdModeFormation == idMode) |
||||
.Select(mode => new ModeFormationDTO { Id = mode.IdModeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
StatutFormationDTO statutPlanifie = epContext.StatutFormation.Where(mode => mode.IdStatutFormation == idStatut) |
||||
.Select(mode => new StatutFormationDTO { Id = mode.IdStatutFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
TypeFormationDTO typeELearning = epContext.TypeFormation.Where(mode => mode.IdTypeFormation == idType) |
||||
.Select(mode => new TypeFormationDTO { Id = mode.IdTypeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
OrigineFormationDTO origineFormationCollaborateur = epContext.OrigineFormation.Where(mode => mode.IdOrigineFormation == idOrigine) |
||||
.Select(mode => new OrigineFormationDTO { Id = mode.IdOrigineFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
|
||||
FormationService formationService = new FormationService(epContext, collaborateurService); |
||||
|
||||
FormationDTO formation = await formationService.GetFormationByIdAsync(idFormation); |
||||
|
||||
formation.Intitule = intitule; |
||||
formation.IdAgence = idAgence; |
||||
formation.DateDebut = dateDebut; |
||||
formation.DateFin = dateFin; |
||||
formation.Heure = 2; |
||||
formation.Jour = 1; |
||||
formation.Mode = modeExterne; |
||||
formation.Type = typeELearning; |
||||
formation.Organisme = organisme; |
||||
formation.Origine = origineFormationCollaborateur; |
||||
formation.Statut = statutPlanifie; |
||||
formation.EstCertifiee = false; |
||||
|
||||
// Act |
||||
AsyncTestDelegate throwException = () => formationService.UpdateFormationAsync(idFormation, formation); |
||||
|
||||
// Assert |
||||
Assert.ThrowsAsync(typeof(FormationInvalidException), throwException); |
||||
} |
||||
|
||||
[TestCase(2, 2, 2, 1, 1, 2, "Test modification formation", "Apside", "2020-10-31", "2020-11-04")] |
||||
[TestCase(0, 2, 2, 1, 1, 2, "Test modification formation", "Apside", "2020-10-31", "2020-11-04")] |
||||
[TestCase(null, 2, 2, 1, 1, 2, "Test modification formation", "Apside", "2020-10-31", "2020-11-04")] |
||||
public async Task UpdateFormationAsync_ModifieUneFormationAvecUnIdIncorrecte_LeveUneFormationIncompatibleIdException(long? idFormation, int? idMode, int? idStatut, int? idType, int? idOrigine, long? idAgence, string intitule, string organisme, DateTime? dateDebut, DateTime? dateFin) |
||||
{ |
||||
// Arrange |
||||
ModeFormationDTO modeExterne = epContext.ModeFormation.Where(mode => mode.IdModeFormation == idMode) |
||||
.Select(mode => new ModeFormationDTO { Id = mode.IdModeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
StatutFormationDTO statutPlanifie = epContext.StatutFormation.Where(mode => mode.IdStatutFormation == idStatut) |
||||
.Select(mode => new StatutFormationDTO { Id = mode.IdStatutFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
TypeFormationDTO typeELearning = epContext.TypeFormation.Where(mode => mode.IdTypeFormation == idType) |
||||
.Select(mode => new TypeFormationDTO { Id = mode.IdTypeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
OrigineFormationDTO origineFormationCollaborateur = epContext.OrigineFormation.Where(mode => mode.IdOrigineFormation == idOrigine) |
||||
.Select(mode => new OrigineFormationDTO { Id = mode.IdOrigineFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
|
||||
FormationService formationService = new FormationService(epContext, collaborateurService); |
||||
|
||||
FormationDTO formation = await formationService.GetFormationByIdAsync(1); |
||||
|
||||
formation.Id = idFormation; |
||||
formation.Intitule = intitule; |
||||
formation.IdAgence = idAgence; |
||||
formation.DateDebut = dateDebut; |
||||
formation.DateFin = dateFin; |
||||
formation.Heure = 2; |
||||
formation.Jour = 1; |
||||
formation.Mode = modeExterne; |
||||
formation.Type = typeELearning; |
||||
formation.Organisme = organisme; |
||||
formation.Origine = origineFormationCollaborateur; |
||||
formation.Statut = statutPlanifie; |
||||
formation.EstCertifiee = false; |
||||
|
||||
// Act |
||||
AsyncTestDelegate throwException = () => formationService.UpdateFormationAsync(1, formation); |
||||
|
||||
// Assert |
||||
Assert.ThrowsAsync(typeof(FormationIncompatibleIdException), throwException); |
||||
} |
||||
|
||||
[TestCase(0, 2, 2, 1, 1, 2, "Test modification formation", "Apside", "2020-10-31", "2020-11-04")] |
||||
public void UpdateFormationAsync_ModifieUneFormationAvecUnIdInexistant_RetourneUnObjetNull(long idFormation, int? idMode, int? idStatut, int? idType, int? idOrigine, long? idAgence, string intitule, string organisme, DateTime? dateDebut, DateTime? dateFin) |
||||
{ |
||||
// Arrange |
||||
ModeFormationDTO modeExterne = epContext.ModeFormation.Where(mode => mode.IdModeFormation == idMode) |
||||
.Select(mode => new ModeFormationDTO { Id = mode.IdModeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
StatutFormationDTO statutPlanifie = epContext.StatutFormation.Where(mode => mode.IdStatutFormation == idStatut) |
||||
.Select(mode => new StatutFormationDTO { Id = mode.IdStatutFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
TypeFormationDTO typeELearning = epContext.TypeFormation.Where(mode => mode.IdTypeFormation == idType) |
||||
.Select(mode => new TypeFormationDTO { Id = mode.IdTypeFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
OrigineFormationDTO origineFormationCollaborateur = epContext.OrigineFormation.Where(mode => mode.IdOrigineFormation == idOrigine) |
||||
.Select(mode => new OrigineFormationDTO { Id = mode.IdOrigineFormation, Libelle = mode.Libelle }).FirstOrDefault(); |
||||
|
||||
FormationService formationService = new FormationService(epContext, collaborateurService); |
||||
|
||||
FormationDTO formation = new FormationDTO |
||||
{ |
||||
Id = idFormation, |
||||
Intitule = intitule, |
||||
IdAgence = idAgence, |
||||
DateDebut = dateDebut, |
||||
DateFin = dateFin, |
||||
Heure = 2, |
||||
Jour = 1, |
||||
Mode = modeExterne, |
||||
Type = typeELearning, |
||||
Organisme = organisme, |
||||
Origine = origineFormationCollaborateur, |
||||
Statut = statutPlanifie, |
||||
EstCertifiee = false |
||||
}; |
||||
|
||||
// Act |
||||
AsyncTestDelegate throwException = () => formationService.UpdateFormationAsync(idFormation, formation); |
||||
|
||||
// Assert |
||||
Assert.ThrowsAsync(typeof(FormationNotFoundException), throwException); |
||||
} |
||||
|
||||
|
||||
#endregion |
||||
*/ |
||||
|
||||
} |
||||
} |
Loading…
Reference in new issue