From 3eabcfa96e20b4df64d83d5a378d6c1cef579181 Mon Sep 17 00:00:00 2001 From: "nathan.boileau" Date: Fri, 24 Mar 2023 00:08:39 +0100 Subject: [PATCH] Fix: GetChampions, issue on filtrage --- Sources/EFLol/DBDataManager/EFDataManager.cs | 18 ++++++++++-------- Sources/EFLol/MyDbContext.cs | 2 +- Sources/TestUnitaire/TestAPILol.cs | 14 +++++++------- .../apiLOL/Controllers/ControllerChampions.cs | 12 ++++++------ Sources/apiLOL/DTO/ChampionDTO.cs | 6 +++++- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/Sources/EFLol/DBDataManager/EFDataManager.cs b/Sources/EFLol/DBDataManager/EFDataManager.cs index 5537631..6dc5dda 100644 --- a/Sources/EFLol/DBDataManager/EFDataManager.cs +++ b/Sources/EFLol/DBDataManager/EFDataManager.cs @@ -18,14 +18,19 @@ namespace EFLol.DBDataManager { private MyDbContext _context; - public async Task AddItem(Champion? item) + public EFChampionManager() + { + _context = new MyDbContext(); + } + + public async Task AddItem(Champion? item) { if (item == null) { return null; } - var addItem = await _context.AddAsync(item); - await _context.SaveChangesAsync(); + var addItem = await _context.AddAsync(item); + await _context.SaveChangesAsync(); return addItem.Entity; // Va chercher les info du context (Context.champions.get)(DbSet) et les map en champion model @@ -53,12 +58,9 @@ namespace EFLol.DBDataManager throw new NotImplementedException(); } - public Task GetNbItems() - { - throw new NotImplementedException(); - } + public async Task GetNbItems() => _context.Champions.Count(); - public async Task> GetItems(int index, int count, string? orderingPropertyName = null, bool @descending = false) + public async Task> GetItems(int index, int count, string? orderingPropertyName = null, bool @descending = false) { IEnumerable champions = _context.Champions.Skip(index * count).Take(count).OrderBy(champion => orderingPropertyName).Select(champion => champion.ChampionToPoco()); return champions; diff --git a/Sources/EFLol/MyDbContext.cs b/Sources/EFLol/MyDbContext.cs index 7416c4d..b105cc1 100644 --- a/Sources/EFLol/MyDbContext.cs +++ b/Sources/EFLol/MyDbContext.cs @@ -26,7 +26,7 @@ namespace EFLol { if (!optionsBuilder.IsConfigured) { - optionsBuilder.UseSqlite("Data Source=loldb.db"); + optionsBuilder.UseSqlite("Data Source=../EFLol/loldb.db"); } } diff --git a/Sources/TestUnitaire/TestAPILol.cs b/Sources/TestUnitaire/TestAPILol.cs index 1419976..62d4a3a 100644 --- a/Sources/TestUnitaire/TestAPILol.cs +++ b/Sources/TestUnitaire/TestAPILol.cs @@ -23,7 +23,7 @@ namespace TestUnitaire // Act var nbInListBefore = data.ChampionsMgr.GetNbItems().Result; - var result = await controller.Post(champDTO); + var result = await controller.AddChampion(champDTO); var nbInListAfter = data.ChampionsMgr.GetNbItems().Result; // Assert @@ -47,9 +47,9 @@ namespace TestUnitaire // Act // Call method POST to add a champion - var result = await controller.Post(champDTO); + var result = await controller.AddChampion(champDTO); // Call method GET to get the champion - var resultGet = await controller.GetChampion(name); + var resultGet = await controller.GetChampionByName(name); // Assert Assert.Equal(name, champDTO.Name); @@ -71,10 +71,10 @@ namespace TestUnitaire // Act // Add a champion var champDTO = new ChampionDTO(name, "Ancienne bio", "icon.png"); - var resultPost = await controller.Post(champDTO); + var resultPost = await controller.AddChampion(champDTO); // Call method PUT to change the bio of a champion - var resultPut = await controller.Put(name, bio); + var resultPut = await controller.UpdateChampion(name, bio); var champion = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); var bioOfChampion = champion.Bio; @@ -99,10 +99,10 @@ namespace TestUnitaire // Act // Add a champion var champDTO = new ChampionDTO(name, "Ancienne bio", "icon.png"); - var resultPost = await controller.Post(champDTO); + var resultPost = await controller.AddChampion(champDTO); // Call method DELETE to delete the champion - var resultDelete = await controller.Delete(name); + var resultDelete = await controller.DeleteChampion(name); // Assert // Does the type of the result is a OkObjectResult diff --git a/Sources/apiLOL/Controllers/ControllerChampions.cs b/Sources/apiLOL/Controllers/ControllerChampions.cs index d2f5bd0..da7af5c 100644 --- a/Sources/apiLOL/Controllers/ControllerChampions.cs +++ b/Sources/apiLOL/Controllers/ControllerChampions.cs @@ -25,7 +25,7 @@ namespace apiLOL.Controllers [HttpGet] [ProducesResponseType(typeof(ChampionPageDTO), 200)] - public async Task Get([FromQuery] int index = 0, int count = 10, string? name = "") + public async Task GetChampions([FromQuery] int index = 0, int count = 10, string? name = "") { //FromQuery permet de filtrer dans la collection de champions en fonction du nom // Possible de faire une classe PageRequest pour gérer les paramètres index et count @@ -49,7 +49,7 @@ namespace apiLOL.Controllers [HttpGet] [Route("{name}")] [ProducesResponseType(typeof(ChampionDTO), 200)] - public async Task GetChampion(string name) + public async Task GetChampionByName(string name) { _logger.LogInformation($"methode GetChampion de ControllerChampions appelée avec le paramètre {name}"); try @@ -66,7 +66,7 @@ namespace apiLOL.Controllers [HttpPost] - public async Task Post(ChampionDTO champDTO) + public async Task AddChampion(ChampionDTO champDTO) { _logger.LogInformation($"methode Post de ControllerChampions appelée avec le paramètre {champDTO.Name}"); try @@ -74,7 +74,7 @@ namespace apiLOL.Controllers Champion tmp = champDTO.ToModel(); Champion champion = await _dataManager.AddItem(tmp); ChampionDTO dtoChamp = champion.ToDTO(); - return CreatedAtAction(nameof(GetChampion), new {name = dtoChamp.Name}, dtoChamp); + return CreatedAtAction(nameof(GetChampionByName), new {name = dtoChamp.Name}, dtoChamp); } catch (Exception ex) { @@ -84,7 +84,7 @@ namespace apiLOL.Controllers } [HttpPut("{name}")] - public async Task Put(string name, string bio) + public async Task UpdateChampion(string name, string bio) { _logger.LogInformation( $"methode Put de ControllerChampions appelée avec le paramètre name: {name} et bio: {bio}"); @@ -103,7 +103,7 @@ namespace apiLOL.Controllers } [HttpDelete("{name}")] - public async Task Delete(string name) + public async Task DeleteChampion(string name) { _logger.LogInformation($"methode Delete de ControllerChampions appelée avec le paramètre name: {name}"); diff --git a/Sources/apiLOL/DTO/ChampionDTO.cs b/Sources/apiLOL/DTO/ChampionDTO.cs index 86cc6c8..19f4c60 100644 --- a/Sources/apiLOL/DTO/ChampionDTO.cs +++ b/Sources/apiLOL/DTO/ChampionDTO.cs @@ -13,5 +13,9 @@ public string Name { get; set; } public string Bio { get; set; } public string Icon { get; set; } - } + + public bool Equals(ChampionDTO other) => other.Name == this.Name && other.Bio == this.Bio && other.Icon == this.Icon; + + public string toString() => $"ChampionDTO: {Name} {Bio} {Icon}"; + } }