diff --git a/Sources/APILOL/Controllers/v1/ChampionsController.cs b/Sources/APILOL/Controllers/v1/ChampionsController.cs index 6094141..3ed1a7b 100644 --- a/Sources/APILOL/Controllers/v1/ChampionsController.cs +++ b/Sources/APILOL/Controllers/v1/ChampionsController.cs @@ -126,8 +126,8 @@ namespace APILOL.Controllers.v1 { if(champion2.Count() == 0) { - await dataManager.UpdateItem(champion.First(), championDTO.ToModel()); - return Ok(); + var newchampion = await dataManager.UpdateItem(champion.First(), championDTO.ToModel()); + return Ok(newchampion); } _logger.LogError("champion already exist with this unique name."); diff --git a/Sources/APILOL/Program.cs b/Sources/APILOL/Program.cs index d5648a3..190aea9 100644 --- a/Sources/APILOL/Program.cs +++ b/Sources/APILOL/Program.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.AspNetCore.Mvc.Versioning; +using Microsoft.OpenApi.Models; using Model; using StubLib; using Swashbuckle.Swagger; @@ -14,7 +15,11 @@ builder.Services.AddSingleton(); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); +builder.Services.AddSwaggerGen(options => +{ + options.SwaggerDoc("v1", new OpenApiInfo { Title = "My API v1", Version = "v1" }); + options.SwaggerDoc("v2", new OpenApiInfo { Title = "My API v2", Version = "v2" }); +}); builder.Services.AddApiVersioning(opt => { diff --git a/Sources/TestUnitaire/UnitTestChampion.cs b/Sources/TestUnitaire/UnitTestChampion.cs index bf9dff6..c6782a1 100644 --- a/Sources/TestUnitaire/UnitTestChampion.cs +++ b/Sources/TestUnitaire/UnitTestChampion.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.Logging.Abstractions; using Model; using StubLib; using System.Web.Http; +using System.Web.Http.Results; using ChampionsController = APILOL.Controllers.v1.ChampionsController; namespace TestUnitaire @@ -16,81 +17,115 @@ namespace TestUnitaire [TestClass] public class UnitTestChampion { - private readonly ChampionsController controller; - private readonly StubData stub; - public UnitTestChampion() + [TestClass] + public class ChampionsControllerTest { - stub = new StubData(); - controller = new ChampionsController(stub, new NullLogger()); - } + private readonly StubData stub; + private readonly ChampionsController championsStub; + public ChampionsControllerTest() + { + stub = new StubData(); + championsStub = new ChampionsController(stub, new NullLogger()); + } - [TestMethod] - public async Task TestGet() - { - var champions = await controller.Get(new PageRequest()); + [TestMethod] + public async Task TestGetChampions() + { + //Arrange - //Assert - var resultObject = champions as OkObjectResult; - Assert.IsNotNull(resultObject); + //Act + var total = await stub.ChampionsMgr.GetNbItems(); + var champion = await championsStub.Get(new PageRequest() { Offset = 0, Limit = 2 }); - var resultType = resultObject?.Value as IEnumerable; - Assert.IsNotNull(resultType); + //Assert + var objectResult = champion as OkObjectResult; + Assert.IsNotNull(objectResult); - Assert.AreEqual(resultType.Count(), await stub.ChampionsMgr.GetNbItems()); - } - [TestMethod] - public async Task TestPost() - { + } - //Arange - var champion = new ChampionDTO + [TestMethod] + public async Task TestPostChampion() { - Name = "Jinx", - Bio = "Awesome , great, fantastic Q", - }; + //Arange + var ChampionDto = new ChampionDTO + { + Name = "Winrrard", + Bio = "The amazing champ", + Class = ChampionClass.Assassin, + Icon = "", + Image = new LargeImage(""), + Skills = new List() + { + new SkillDTO() {Name = "skill", Description="Empty", Type = SkillType.Unknown} + }, + }; - //Act - var championsResult = await controller.Post(champion); + //Act + var championsResult = await championsStub.Post(ChampionDto); - //Assert - var objectResult = championsResult as CreatedAtActionResult; - Assert.IsNotNull(objectResult); + //Assert + var objectResult = championsResult as CreatedAtActionResult; + Assert.IsNotNull(objectResult); - var champions = objectResult?.Value as ChampionDTO; - Assert.IsNotNull(champions); - } + var champions = objectResult?.Value as ChampionDTO; + Assert.IsNotNull(champions); - [TestMethod] - public async Task TestDelete() - { - //Arange - string championName = "Aatrox"; + Assert.AreEqual("Winrrard", champions.Name); - // Act - var result = await controller.Delete(championName); + Assert.AreEqual("skill", champions.Skills.First().Name); + Assert.AreEqual("Empty", champions.Skills.First().Description); - // Assert - Assert.IsInstanceOfType(result, typeof(OkObjectResult)); - Assert.IsTrue((await stub.ChampionsMgr.GetItemsByName(championName, 0, await stub.ChampionsMgr.GetNbItems())).Count() == 0); - } + } - [TestMethod] - public async Task TestUpdate() - { - //Arange - string championName = "Aatrox"; - var updatedChampion = new ChampionDTO {Name = "Bibouuu", Bio = "Updated Bio" }; + [TestMethod] + public async Task TestPutChampion() + { + //Arange + var ChampionDto = new ChampionDTO + { + Name = "Aatrox", + Bio = "The amazing champ", + Class = ChampionClass.Assassin, + Icon = "", + Image = new LargeImage(""), + Skills = new List() + { + new SkillDTO() {Name = "skill", Description="Empty", Type = SkillType.Unknown} + }, + }; + + //Act + var championsResult = await championsStub.PutAsync(ChampionDto.Name, ChampionDto); + + //Assert + var objectResult = championsResult as OkObjectResult; + Assert.IsNull(objectResult); + + + } + + [TestMethod] + public async Task TestDeleteChampion() + { + //Arange + + + //Act + var total = await stub.ChampionsMgr.GetNbItems(); + var championsResult = await championsStub.Delete("Aatrox"); + + //Assert + var objectResult = championsResult as OkObjectResult; + Assert.IsNotNull(objectResult); + + Assert.AreNotEqual(await stub.ChampionsMgr.GetNbItems(), total); - // Act - var result = await controller.PutAsync(championName, updatedChampion); + } - // Assert - Assert.IsInstanceOfType(result, typeof(OkResult)); - Assert.IsNotNull(stub.ChampionsMgr.GetItemsByName("Bibouuu",0, await stub.ChampionsMgr.GetNbItems())); }