diff --git a/.vs/LolProject/v17/.suo b/.vs/LolProject/v17/.suo index cb24cbd..25c0511 100644 Binary files a/.vs/LolProject/v17/.suo and b/.vs/LolProject/v17/.suo differ diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs index 62b7a03..53c9853 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs @@ -29,6 +29,7 @@ namespace ApiLol.Controllers.v1 IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) .Select(x => x.ToDto()); return Ok(dtos); + } // GET api//5 @@ -60,9 +61,9 @@ namespace ApiLol.Controllers.v1 { _logger.LogInformation("method {Action} call with {name} and {item}", nameof(Put), name, champion); - var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); - - return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())); + var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); + + return Ok((await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())).ToDto()); } diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs index 531787e..838fe00 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs @@ -45,9 +45,9 @@ namespace ApiLol.Controllers.v2 .Select(x => x.ToDto()); return Ok(dtos); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -69,13 +69,13 @@ namespace ApiLol.Controllers.v2 } _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest); - IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) + IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count, pageRequest.orderingPropertyName, pageRequest.descending)) .Select(x => x.ToDto()); - return Ok(dtos); + return Ok(new { Data = dtos, index = pageRequest.index, count = pageRequest.count, total = nbTotal}); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -95,9 +95,9 @@ namespace ApiLol.Controllers.v2 } return Ok(dtos.First()); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -116,9 +116,9 @@ namespace ApiLol.Controllers.v2 return CreatedAtAction(nameof(Get), (await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto()); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -143,11 +143,11 @@ namespace ApiLol.Controllers.v2 return BadRequest("Name is already exist"); } } - return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())); + return Ok((await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())).ToDto()); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -163,9 +163,9 @@ namespace ApiLol.Controllers.v2 return Ok(res); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -181,9 +181,9 @@ namespace ApiLol.Controllers.v2 return Ok(res); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } @@ -202,9 +202,9 @@ namespace ApiLol.Controllers.v2 } return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); } - catch (Exception e) + catch (Exception error) { - return BadRequest(e.Message); + return BadRequest(error.Message); } } } diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Mapper/ChampionMapper.cs b/src/EntityFramework_LoL/Sources/ApiLol/Mapper/ChampionMapper.cs index 0e9e94c..094739d 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Mapper/ChampionMapper.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Mapper/ChampionMapper.cs @@ -21,7 +21,12 @@ namespace ApiLol.Mapper public static Champion ToModel(this ChampionDto championDto) { - return new Champion(championDto.Name, championDto.Class.ToModel(), championDto.Icon, championDto.Image.Base64, championDto.Bio); + var champ = new Champion(championDto.Name, championDto.Class.ToModel(), championDto.Icon, championDto.Image.Base64, championDto.Bio); + foreach(var skin in championDto.Skins) + { + champ.AddSkin(skin.ToModel(champ)); + } + return champ; } } diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Mapper/SkinMapper.cs b/src/EntityFramework_LoL/Sources/ApiLol/Mapper/SkinMapper.cs index 7104d37..9b5273b 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Mapper/SkinMapper.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Mapper/SkinMapper.cs @@ -30,9 +30,9 @@ namespace ApiLol.Mapper }; } - public static Skin ToModel(this SkinDto skinDto) + public static Skin ToModel(this SkinDto skinDto, Champion champ) { - return new Skin(skinDto.Name, null, skinDto.Price, skinDto.Icon, skinDto.Image.Base64, skinDto.Description); + return new Skin(skinDto.Name, champ, skinDto.Price, skinDto.Icon, skinDto.Image.Base64, skinDto.Description); } } diff --git a/src/EntityFramework_LoL/Sources/DTO/PageRequest.cs b/src/EntityFramework_LoL/Sources/DTO/PageRequest.cs index c996118..a947eb9 100644 --- a/src/EntityFramework_LoL/Sources/DTO/PageRequest.cs +++ b/src/EntityFramework_LoL/Sources/DTO/PageRequest.cs @@ -10,7 +10,7 @@ namespace DTO { public int index { get; set; } = 0; public int count { get; set; } = 0; - public string? orderingPropertyName { get; set; } = null; - public bool descending { get; set; } = true; + public string? orderingPropertyName { get; set; } = "Name"; + public bool descending { get; set; } = false; } } diff --git a/src/EntityFramework_LoL/Sources/Model/Champion.cs b/src/EntityFramework_LoL/Sources/Model/Champion.cs index b8b369b..313e607 100644 --- a/src/EntityFramework_LoL/Sources/Model/Champion.cs +++ b/src/EntityFramework_LoL/Sources/Model/Champion.cs @@ -62,7 +62,7 @@ public class Champion : IEquatable public ImmutableHashSet Skills => skills.ToImmutableHashSet(); private HashSet skills = new HashSet(); - internal bool AddSkin(Skin skin) + public bool AddSkin(Skin skin) { if (skins.Contains(skin)) return false; @@ -70,7 +70,7 @@ public class Champion : IEquatable return true; } - internal bool RemoveSkin(Skin skin) + public bool RemoveSkin(Skin skin) => skins.Remove(skin); public bool AddSkill(Skill skill) diff --git a/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs b/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs index e7ba998..078a64a 100644 --- a/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs +++ b/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs @@ -63,6 +63,64 @@ namespace ApiTests var champions = objectResult?.Value as ChampionDto; Assert.IsNotNull(champions); + } + + [TestMethod] + public async Task TestPutChampion() + { + //Arange + var ChampionDto = new ChampionDto + { + Name = "Sylas", + Bio = "Good", + Class = ChampionClassDto.Tank, + Icon = "", + Image = new LargeImageDto() { Base64 = "" }, + Skins = new List() + }; + var ChampionDtoPut = new ChampionDto + { + Name = "Sylas", + Bio = "Bad", + Class = ChampionClassDto.Tank, + Icon = "", + Image = new LargeImageDto() { Base64 = "" }, + Skins = new List() + }; + + //Act + await champs.Post(ChampionDto); + var championsResult = await champs.Put(ChampionDto.Name, ChampionDtoPut); + + //Assert + var objectResult = championsResult as OkObjectResult; + Assert.IsNotNull(objectResult); + + var champions = objectResult?.Value as ChampionDto; + Assert.IsNotNull(champions); + + Assert.AreNotEqual(ChampionDto.Bio, champions.Bio); + Assert.AreEqual(ChampionDtoPut.Bio, champions.Bio); + + } + + [TestMethod] + public async Task TestDeleteChampion() + { + //Arange + + + //Act + var total = await stub.ChampionsMgr.GetNbItems(); + var championsResult = await champs.Delete("Akali"); + + //Assert + var objectResult = championsResult as OkObjectResult; + Assert.IsNotNull(objectResult); + + Assert.AreEqual(objectResult.Value, true); + Assert.AreNotEqual(await stub.ChampionsMgr.GetNbItems(), total); + } }