Fix: GetChampions, issue on filtrage
continuous-integration/drone/push Build is passing Details

master
Nathan BOILEAU 2 years ago
parent 5aabac6125
commit 3eabcfa96e

@ -18,13 +18,18 @@ namespace EFLol.DBDataManager
{ {
private MyDbContext _context; private MyDbContext _context;
public EFChampionManager()
{
_context = new MyDbContext();
}
public async Task<Champion?> AddItem(Champion? item) public async Task<Champion?> AddItem(Champion? item)
{ {
if (item == null) if (item == null)
{ {
return null; return null;
} }
var addItem = await _context.AddAsync(item); var addItem = await _context.AddAsync<Champion>(item);
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
return addItem.Entity; return addItem.Entity;
@ -53,10 +58,7 @@ namespace EFLol.DBDataManager
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<int> GetNbItems() public async Task<int> GetNbItems() => _context.Champions.Count();
{
throw new NotImplementedException();
}
public async Task<IEnumerable<Champion?>> GetItems(int index, int count, string? orderingPropertyName = null, bool @descending = false) public async Task<IEnumerable<Champion?>> GetItems(int index, int count, string? orderingPropertyName = null, bool @descending = false)
{ {

@ -26,7 +26,7 @@ namespace EFLol
{ {
if (!optionsBuilder.IsConfigured) if (!optionsBuilder.IsConfigured)
{ {
optionsBuilder.UseSqlite("Data Source=loldb.db"); optionsBuilder.UseSqlite("Data Source=../EFLol/loldb.db");
} }
} }

@ -23,7 +23,7 @@ namespace TestUnitaire
// Act // Act
var nbInListBefore = data.ChampionsMgr.GetNbItems().Result; var nbInListBefore = data.ChampionsMgr.GetNbItems().Result;
var result = await controller.Post(champDTO); var result = await controller.AddChampion(champDTO);
var nbInListAfter = data.ChampionsMgr.GetNbItems().Result; var nbInListAfter = data.ChampionsMgr.GetNbItems().Result;
// Assert // Assert
@ -47,9 +47,9 @@ namespace TestUnitaire
// Act // Act
// Call method POST to add a champion // 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 // Call method GET to get the champion
var resultGet = await controller.GetChampion(name); var resultGet = await controller.GetChampionByName(name);
// Assert // Assert
Assert.Equal(name, champDTO.Name); Assert.Equal(name, champDTO.Name);
@ -71,10 +71,10 @@ namespace TestUnitaire
// Act // Act
// Add a champion // Add a champion
var champDTO = new ChampionDTO(name, "Ancienne bio", "icon.png"); 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 // 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 champion = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First();
var bioOfChampion = champion.Bio; var bioOfChampion = champion.Bio;
@ -99,10 +99,10 @@ namespace TestUnitaire
// Act // Act
// Add a champion // Add a champion
var champDTO = new ChampionDTO(name, "Ancienne bio", "icon.png"); 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 // Call method DELETE to delete the champion
var resultDelete = await controller.Delete(name); var resultDelete = await controller.DeleteChampion(name);
// Assert // Assert
// Does the type of the result is a OkObjectResult // Does the type of the result is a OkObjectResult

@ -25,7 +25,7 @@ namespace apiLOL.Controllers
[HttpGet] [HttpGet]
[ProducesResponseType(typeof(ChampionPageDTO), 200)] [ProducesResponseType(typeof(ChampionPageDTO), 200)]
public async Task<IActionResult> Get([FromQuery] int index = 0, int count = 10, string? name = "") public async Task<IActionResult> GetChampions([FromQuery] int index = 0, int count = 10, string? name = "")
{ {
//FromQuery permet de filtrer dans la collection de champions en fonction du nom //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 // Possible de faire une classe PageRequest pour gérer les paramètres index et count
@ -49,7 +49,7 @@ namespace apiLOL.Controllers
[HttpGet] [HttpGet]
[Route("{name}")] [Route("{name}")]
[ProducesResponseType(typeof(ChampionDTO), 200)] [ProducesResponseType(typeof(ChampionDTO), 200)]
public async Task<IActionResult> GetChampion(string name) public async Task<IActionResult> GetChampionByName(string name)
{ {
_logger.LogInformation($"methode GetChampion de ControllerChampions appelée avec le paramètre {name}"); _logger.LogInformation($"methode GetChampion de ControllerChampions appelée avec le paramètre {name}");
try try
@ -66,7 +66,7 @@ namespace apiLOL.Controllers
[HttpPost] [HttpPost]
public async Task<IActionResult> Post(ChampionDTO champDTO) public async Task<IActionResult> AddChampion(ChampionDTO champDTO)
{ {
_logger.LogInformation($"methode Post de ControllerChampions appelée avec le paramètre {champDTO.Name}"); _logger.LogInformation($"methode Post de ControllerChampions appelée avec le paramètre {champDTO.Name}");
try try
@ -74,7 +74,7 @@ namespace apiLOL.Controllers
Champion tmp = champDTO.ToModel(); Champion tmp = champDTO.ToModel();
Champion champion = await _dataManager.AddItem(tmp); Champion champion = await _dataManager.AddItem(tmp);
ChampionDTO dtoChamp = champion.ToDTO(); 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) catch (Exception ex)
{ {
@ -84,7 +84,7 @@ namespace apiLOL.Controllers
} }
[HttpPut("{name}")] [HttpPut("{name}")]
public async Task<IActionResult> Put(string name, string bio) public async Task<IActionResult> UpdateChampion(string name, string bio)
{ {
_logger.LogInformation( _logger.LogInformation(
$"methode Put de ControllerChampions appelée avec le paramètre name: {name} et bio: {bio}"); $"methode Put de ControllerChampions appelée avec le paramètre name: {name} et bio: {bio}");
@ -103,7 +103,7 @@ namespace apiLOL.Controllers
} }
[HttpDelete("{name}")] [HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name) public async Task<IActionResult> DeleteChampion(string name)
{ {
_logger.LogInformation($"methode Delete de ControllerChampions appelée avec le paramètre name: {name}"); _logger.LogInformation($"methode Delete de ControllerChampions appelée avec le paramètre name: {name}");

@ -13,5 +13,9 @@
public string Name { get; set; } public string Name { get; set; }
public string Bio { get; set; } public string Bio { get; set; }
public string Icon { 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}";
} }
} }

Loading…
Cancel
Save