|
|
|
@ -0,0 +1,152 @@ |
|
|
|
|
using EPAServeur.Context; |
|
|
|
|
using EPAServeur.IServices; |
|
|
|
|
using EPAServeur.Services; |
|
|
|
|
using IO.Swagger.ApiCollaborateur; |
|
|
|
|
using IO.Swagger.Controllers; |
|
|
|
|
using IO.Swagger.DTO; |
|
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
|
using Microsoft.Extensions.Logging.Abstractions; |
|
|
|
|
using NUnit.Framework; |
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.Text; |
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
|
|
|
|
|
namespace EPAServeur.Tests.Controllers |
|
|
|
|
{ |
|
|
|
|
[TestFixture] |
|
|
|
|
public class NoteApiTests |
|
|
|
|
{ |
|
|
|
|
#region Variables |
|
|
|
|
private EpContext context; |
|
|
|
|
private ICollaborateurApi collaborateurApi; |
|
|
|
|
private ICollaborateurService collaborateurService; |
|
|
|
|
private INoteService noteService; |
|
|
|
|
private ILogger<NotesApiController> logger; |
|
|
|
|
private Guid? auteur1, auteur2, auteur3; |
|
|
|
|
private Guid? collaborateur1, collaborateur2, collaborateur3; |
|
|
|
|
private Guid? auteurNonExistant, collaborateurNonExistant, collaborateurParti, referentParti; |
|
|
|
|
#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; |
|
|
|
|
|
|
|
|
|
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(); |
|
|
|
|
collaborateurService = new CollaborateurService(collaborateurApi, context); |
|
|
|
|
noteService = new NoteService(collaborateurApi, collaborateurService, context); |
|
|
|
|
logger = new NullLogger<NotesApiController>(); |
|
|
|
|
|
|
|
|
|
auteur1 = new Guid("ecf528c3-e509-402f-87bb-c8821467e350"); |
|
|
|
|
auteur2 = new Guid("6aa62dcb-f7c9-4c0c-af40-e934a4d6a7eb"); |
|
|
|
|
auteur3 = new Guid("571463f3-b286-4a21-9eab-0707dc506dec"); |
|
|
|
|
|
|
|
|
|
collaborateur1 = new Guid("92b29b9c-40a4-4aa0-9412-bc97a379e52f"); |
|
|
|
|
collaborateur2 = new Guid("006226f6-51b2-4a02-a302-7447f7fccc04"); |
|
|
|
|
collaborateur3 = new Guid("e5d36da4-df16-4d19-8a11-1ba2f6efc80c"); |
|
|
|
|
|
|
|
|
|
auteurNonExistant = collaborateurNonExistant = new Guid("397f616e-44ff-11eb-b378-0242ac130002"); |
|
|
|
|
collaborateurParti = new Guid("3c99214d-0a5e-4bb6-b7b2-7d9bb8143c50"); |
|
|
|
|
referentParti = new Guid("0021430f-9cb5-4d7e-a395-904c95421920"); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Tests |
|
|
|
|
//AddNote |
|
|
|
|
[Test] |
|
|
|
|
public async Task AddNote() |
|
|
|
|
{ |
|
|
|
|
NotesApiController notesApiController = new NotesApiController(noteService, logger); |
|
|
|
|
CollaborateurDTO collaborateurDTO = await collaborateurService.GetCollaborateurByIdAsync(collaborateur1); |
|
|
|
|
DateTime date = DateTime.Now; |
|
|
|
|
DetailsNoteDTO nouvelleNote = new DetailsNoteDTO() |
|
|
|
|
{ |
|
|
|
|
Collaborateur = collaborateurDTO, |
|
|
|
|
DateCreation = date, |
|
|
|
|
DateMiseAjour = date, |
|
|
|
|
IdAuteur = auteur1, |
|
|
|
|
Texte = "Texte nouvelle note", |
|
|
|
|
Titre = "Titre nouvelle note" |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Task<IActionResult> task = notesApiController.AddNote(nouvelleNote); |
|
|
|
|
CreatedResult result = task.Result as CreatedResult; |
|
|
|
|
Assert.AreEqual(201, result.StatusCode); |
|
|
|
|
Assert.IsInstanceOf<DetailsNoteDTO>(result.Value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//DeleteNote |
|
|
|
|
[Test] |
|
|
|
|
public void SupprimerNote() |
|
|
|
|
{ |
|
|
|
|
NotesApiController notesApiController = new NotesApiController(noteService, logger); |
|
|
|
|
Task<IActionResult> task = notesApiController.DeleteNote(1); |
|
|
|
|
NoContentResult result = task.Result as NoContentResult; |
|
|
|
|
Assert.AreEqual(204, result.StatusCode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//GetNoteById |
|
|
|
|
[Test] |
|
|
|
|
public void GetNoteById() |
|
|
|
|
{ |
|
|
|
|
NotesApiController notesApiController = new NotesApiController(noteService, logger); |
|
|
|
|
Task<IActionResult> task = notesApiController.GetNoteById(1); |
|
|
|
|
OkObjectResult result = task.Result as OkObjectResult; |
|
|
|
|
Assert.AreEqual(200 ,result.StatusCode); |
|
|
|
|
Assert.IsInstanceOf<DetailsNoteDTO>(result.Value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//GetNotesAuteur |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//GetNotesAuteurCount |
|
|
|
|
|
|
|
|
|
//UpdateNote |
|
|
|
|
[Test] |
|
|
|
|
public async Task UpdateNote() |
|
|
|
|
{ |
|
|
|
|
NotesApiController notesApiController = new NotesApiController(noteService, logger); |
|
|
|
|
CollaborateurDTO collaborateurDTO = await collaborateurService.GetCollaborateurByIdAsync(collaborateur1); |
|
|
|
|
DateTime date = DateTime.Now; |
|
|
|
|
DetailsNoteDTO updatedNote = await noteService.GetNoteByIdAsync(2); |
|
|
|
|
updatedNote.Texte = "Texte mise à jour"; |
|
|
|
|
updatedNote.Titre = "Titre mise à jour"; |
|
|
|
|
|
|
|
|
|
Task<IActionResult> task = notesApiController.UpdateNote(updatedNote, 2); |
|
|
|
|
OkObjectResult result = task.Result as OkObjectResult; |
|
|
|
|
Assert.AreEqual(200, result.StatusCode); |
|
|
|
|
Assert.IsInstanceOf<DetailsNoteDTO>(result.Value); |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |