From 392fc430cca4d53580f16d5986fbba2ab3190344 Mon Sep 17 00:00:00 2001 From: "emre.kartal" Date: Tue, 7 Mar 2023 19:24:51 +0100 Subject: [PATCH] Finish Champions Controller (filtrage, pagination ...) and add function for UTChampion :white_check_mark: --- .vs/LolProject/v17/.suo | Bin 13824 -> 12800 bytes .../Controllers/v1/ChampionsController.cs | 7 ++- .../Controllers/v2/ChampionsController.cs | 38 ++++++------ .../Sources/ApiLol/Mapper/ChampionMapper.cs | 7 ++- .../Sources/ApiLol/Mapper/SkinMapper.cs | 4 +- .../Sources/DTO/PageRequest.cs | 4 +- .../Sources/Model/Champion.cs | 4 +- .../Tests/ApiTests/ChampionsControllerTest.cs | 58 ++++++++++++++++++ 8 files changed, 93 insertions(+), 29 deletions(-) diff --git a/.vs/LolProject/v17/.suo b/.vs/LolProject/v17/.suo index cb24cbd2ddbc7d4364303b162eecfeb1a9ccf79e..25c051124196f9ca1e34268cca7c7a9a6f703eec 100644 GIT binary patch delta 1092 zcmZq3X-L`N!^FrwS&>Pev!FmoK`ihlquAt9rgM`Iiy2NnpvN+~g4vswfrWvAffb1V z1HoiQNtMZ8m^ECufdc=40>V%U0U*r*#5_d6ZHwG?XoW$e< zb-{+&0>rz3UB!b7YBI=FJ|J5N$`=LFAXk8FgxL;K!w;1Qu|aakuGqxo!NLJ@5=av4 z#}Yn&UPdOM2uvHq=O9s#Wnw65`2%=BerH1xoTSe(`3HXh)eU7do%~b$6fYylp`h@E zI#^@#4+%jgWm5}dvm|qKQ(a5r)Kpy);}iqk#6&Z5T|+}ti&P8qR3ih^$vV_UPGzotVxAmgPG?o^rVU;s>3 zB0iIkh#5?7Pyhy!h!2k>P=N%pq7u=bNgB>Tn{6jI$T{;ef>N0XvVt#i0X$Mr0hkXa z8M17ykoRB|ILG$3bJ5{~!}{tqOZ*mfIpwBq@zoHAoD@u-&4>K7~{-PAX14;uR z?H~a0kFq~Vk`)w{ER%nVdh;*?S+Y=N5G7*gc^N^84V2Ij8pZv2!HFG|5n!T|q*xe5 zCjV4CMZASxV5KEuU}sEr00oekH&**XIIvhHe;k+ZWkJ5j5uBU9Xz(yj(s9A!SqWf* S2gN#STGJ6`+{|tCl^FmIfRl*; delta 1148 zcmb_b&1(};5YO9eZCZDe&1dteX^i-l#7#`81;N%x2_}$~_U1)XlOl)+c|!4G(5ndD zIp|sZ1Js<06$QbAR`BA*lYhbr&80fC`&Kp{q=zmH@4er=H^2GK%noi1?!0PB%m=g5 z@u}U7w=W-G`p)8TU-}I1r84Z4WZ3jJRQ4M`$>Z_R3SUEcFukYG_z+Ohjta*eCFM)tMnQYM@|+n`Q&4KKeQ?Uj{7Isu9Hw!NqD90xAXcJ9x^Ud$rJLe& z)4!Rn%RVP*OAYt8R1d{;;@BGfEvU_0hDU)b3Wb>wB;+*C%di({A3_*52cu|1p~5+8 z?3`k4MHY<2Zl@G$sf?$NM|L^{96>PYb_|YT>d7X2kaXawCr0k7 zr7q*X!*gF$tI**w^wgR!?E;L5%px!fezJx|m*nAIC@7sM_tq=D?n1e!S2~?ywKv}_ z-n>|@6uay53%y=Pug+DW5dCIkHPCWZg~sK86Vp}nQkj_ z;rRQmEDtv`b*6cKKKo^EKdnCav6^@X*SBCve+X^;9^42o8QB`t@&lDk{PP;jY+IQ` zkOs^N349jYLMNI@2c4kG%P`7({6AH)X60)4t6}Z!7U6$KAshkrRHTrJ+Bv4zB$TQ! zHUXjvL-VY{jC>vH-U9F}-aG_R=NeYu+zkO9va4 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); + } }