RunePagesController and UT done
continuous-integration/drone/push Build is passing Details

pull/8/head
Emre KARTAL 2 years ago
parent 48f4b27ae3
commit 195db06bfd

@ -108,19 +108,44 @@ namespace ApiLol.Controllers
} }
// PUT api/<RunePagesController>/5 // PUT api/<RunePagesController>/5
[HttpPut("{id}")] [HttpPut("{name}")]
public void Put(int id, [FromBody] string value) public async Task<IActionResult> Put(string name, [FromBody] RunePageDto runePage)
{ {
_logger.LogInformation("method {Action} - RUNEPAGE call with {name} and {item}", nameof(Put), name, runePage);
try
{
var dtos = (await _manager.RunePagesMgr.GetItemByName(name, 0, await _manager.RunePagesMgr.GetNbItems()));
if (dtos.IsNullOrEmpty())
{
return NotFound($"Name {name} not exist");
}
// Checks if the new name exists
if (name != runePage.Name)
{
var dtos2 = (await _manager.RunesMgr.GetItemByName(runePage.Name, 0, await _manager.RunePagesMgr.GetNbItems()));
if (!dtos2.IsNullOrEmpty() || dtos2.Count() > 0)
{
return BadRequest($"New Name {runePage.Name} is already exist");
}
}
return Ok((await _manager.RunePagesMgr.UpdateItem(dtos.First(), runePage.ToModel())).ToDto());
}
catch (Exception error)
{
_logger.LogError(error.Message);
return BadRequest(error.Message);
}
} }
// DELETE api/<RunePagesController>/5 // DELETE api/<RunePagesController>/5
[HttpDelete("{name}")] [HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name) public async Task<IActionResult> Delete(string name)
{ {
_logger.LogInformation("method {Action} - RUNE call with {name}", nameof(Delete), name); _logger.LogInformation("method {Action} - RUNEPAGE call with {name}", nameof(Delete), name);
try try
{ {
var dtos = (await _manager.RunePagesMgr.GetItemByName(name, 0, await _manager.RunesMgr.GetNbItems())); var dtos = (await _manager.RunePagesMgr.GetItemByName(name, 0, await _manager.RunePagesMgr.GetNbItems()));
if (dtos.IsNullOrEmpty()) if (dtos.IsNullOrEmpty())
{ {
_logger.LogWarning("{name} was not found", name); _logger.LogWarning("{name} was not found", name);
@ -135,5 +160,22 @@ namespace ApiLol.Controllers
return BadRequest(error.Message); return BadRequest(error.Message);
} }
} }
[HttpGet("/countRunePages")]
public async Task<ActionResult> GetCountRunePages()
{
_logger.LogInformation("method {Action} - RUNEPAGE call", nameof(GetCountRunePages));
try
{
return Ok(await _manager.RunePagesMgr.GetNbItems());
}
catch (Exception error)
{
_logger.LogError(error.Message);
return BadRequest(error.Message);
}
}
} }
} }

@ -67,7 +67,7 @@ namespace ApiLol.Controllers
_logger.LogInformation("method {Action} - SKIN call with {name}", nameof(Get), name); _logger.LogInformation("method {Action} - SKIN call with {name}", nameof(Get), name);
try try
{ {
var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) var dtos = (await _manager.SkinsMgr.GetItemByName(name, 0, await _manager.SkinsMgr.GetNbItems()))
.Select(x => x.ToDtoC()); .Select(x => x.ToDtoC());
if (dtos.IsNullOrEmpty()) if (dtos.IsNullOrEmpty())
{ {

@ -1,6 +1,7 @@
using ApiLol.Mapper.enums; using ApiLol.Mapper.enums;
using DTO; using DTO;
using Model; using Model;
using static Model.RunePage;
namespace ApiLol.Mapper namespace ApiLol.Mapper
{ {
@ -12,17 +13,26 @@ namespace ApiLol.Mapper
return new RunePageDto() return new RunePageDto()
{ {
Name = runePage.Name, Name = runePage.Name,
Runes = runePage.Runes.ToDictionary(c => c.Key.ToDto(), r => r.Value.ToDto()) Runes = runePage.Runes.ToDictionary(c => c.Key.ToString(), r => r.Value.ToDto())
}; };
} }
public static RunePage ToModel(this RunePageDto runePageDto) public static RunePage ToModel(this RunePageDto runePageDto)
{ {
Category category;
Dictionary<Category, Rune> runDico = runePageDto.Runes.ToDictionary(
r => (RunePage.Category)Enum.Parse(typeof(RunePage.Category), r.Key),
r => r.Value.ToModel()
);
var runePage = new RunePage(runePageDto.Name); var runePage = new RunePage(runePageDto.Name);
foreach( var rune in runePageDto.Runes) foreach (var rune in runePageDto.Runes)
{ {
runePage[rune.Key.ToModel()] = rune.Value.ToModel(); if (!Enum.TryParse<Category>(rune.Key, true, out category))
{
continue;
}
runePage[category] = rune.Value.ToModel();
} }
return runePage; return runePage;

@ -9,7 +9,7 @@ namespace DTO
public partial class RunePageDto public partial class RunePageDto
{ {
public string Name { get; set; } public string Name { get; set; }
public Dictionary<CategoryDto, RuneDto> Runes { get; set; } public Dictionary<string, RuneDto> Runes { get; set; }
} }
} }

@ -111,9 +111,6 @@ namespace ApiTests
var oldResult = await champs.GetCountChampions(); var oldResult = await champs.GetCountChampions();
await champs.Post(ChampionDto); await champs.Post(ChampionDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.ChampionsMgr.GetNbItems(); var newTotal = await stub.ChampionsMgr.GetNbItems();
var newResult = await champs.GetCountChampions(); var newResult = await champs.GetCountChampions();

@ -88,9 +88,6 @@ namespace ApiTests
var oldResult = await champs.GetCountChampions(); var oldResult = await champs.GetCountChampions();
await champs.Post(ChampionDto); await champs.Post(ChampionDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.ChampionsMgr.GetNbItems(); var newTotal = await stub.ChampionsMgr.GetNbItems();
var newResult = await champs.GetCountChampions(); var newResult = await champs.GetCountChampions();

@ -0,0 +1,162 @@
using ApiLol.Controllers;
using DTO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using StubLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ApiTests
{
[TestClass]
public class RunePagesControllerTest
{
private readonly StubData stub;
private readonly RunePagesController runePages;
public RunePagesControllerTest()
{
stub = new StubData();
runePages = new RunePagesController(stub, new NullLogger<RunePagesController>());
}
[TestMethod]
public async Task TestGetRunePage()
{
//Arrange
//Act
var total = await stub.RunePagesMgr.GetNbItems();
var runePage = await runePages.Get(new PageRequest());
//Assert
var objectResult = runePage as OkObjectResult;
Assert.IsNotNull(objectResult);
var runePResult = objectResult.Value as PageResponse<RunePageDto>;
Assert.IsNotNull(runePResult);
var runePagesResult = runePResult.Data as IEnumerable<RunePageDto>;
Assert.IsNotNull(runePagesResult);
Assert.AreEqual(runePagesResult.Count(), total);
}
[TestMethod]
public async Task TestCountRunePage()
{
//Arange
var runePageDto = new RunePageDto
{
Name = "rune page 2",
Runes = new Dictionary<string, RuneDto>()
};
//Act
var oldTotal = await stub.RunePagesMgr.GetNbItems();
var oldResult = await runePages.GetCountRunePages();
await runePages.Post(runePageDto);
var newTotal = await stub.RunePagesMgr.GetNbItems();
var newResult = await runePages.GetCountRunePages();
//Assert
var objectResultOld = oldResult as OkObjectResult;
Assert.IsNotNull(objectResultOld);
var objectResultNew = newResult as OkObjectResult;
Assert.IsNotNull(objectResultNew);
Assert.AreEqual(objectResultOld.Value, oldTotal);
Assert.AreNotEqual(objectResultOld.Value, newTotal);
Assert.AreEqual(objectResultNew.Value, newTotal);
Assert.AreNotEqual(objectResultNew.Value, oldTotal);
}
[TestMethod]
public async Task TestPostRunePage()
{
//Arange
var runePageDto = new RunePageDto
{
Name = "rune page 2",
Runes = new Dictionary<string, RuneDto>()
};
//Act
var total = await stub.RunePagesMgr.GetNbItems();
var runePageResult = await runePages.Post(runePageDto);
//Assert
var objectResult = runePageResult as CreatedAtActionResult;
Assert.IsNotNull(objectResult);
var rp = objectResult?.Value as RunePageDto;
Assert.IsNotNull(rp);
Assert.AreEqual("rune page 2", rp.Name);
Assert.AreNotEqual(total, await stub.RunePagesMgr.GetNbItems());
}
[TestMethod]
public async Task TestPutRunePage()
{
//Arange
var runePageDto = new RunePageDto
{
Name = "rune page 2",
Runes = new Dictionary<string, RuneDto>()
};
var runePageDtoPut = new RunePageDto
{
Name = "rune page 3",
Runes = new Dictionary<string, RuneDto>()
};
//Act
await runePages.Post(runePageDto);
var runePagesResult = await runePages.Put(runePageDto.Name, runePageDtoPut);
//Assert
var objectResult = runePagesResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var rpResult = objectResult?.Value as RunePageDto;
Assert.IsNotNull(rpResult);
Assert.AreNotEqual(runePageDto.Name, rpResult.Name);
Assert.AreEqual(runePageDtoPut.Name, rpResult.Name);
}
[TestMethod]
public async Task TestDeleteRunePage()
{
//Arange
//Act
var total = await stub.RunePagesMgr.GetNbItems();
var runePagesResult = await runePages.Delete("rune page 1");
//Assert
var objectResult = runePagesResult as NoContentResult;
Assert.IsNotNull(objectResult);
Assert.AreNotEqual(await stub.RunePagesMgr.GetNbItems(), total);
}
}
}

@ -71,7 +71,7 @@ namespace ApiTests
var isRuneDto = objectResult?.Value as RuneDto; var isRuneDto = objectResult?.Value as RuneDto;
Assert.IsNotNull(isRuneDto); Assert.IsNotNull(isRuneDto);
Assert.AreEqual(total + 1, await stub.RunesMgr.GetNbItems()); Assert.AreNotEqual(total, await stub.RunesMgr.GetNbItems());
} }
@ -93,9 +93,6 @@ namespace ApiTests
var oldResult = await runes.GetCountRunes(); var oldResult = await runes.GetCountRunes();
await runes.Post(runeDto); await runes.Post(runeDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.RunesMgr.GetNbItems(); var newTotal = await stub.RunesMgr.GetNbItems();
var newResult = await runes.GetCountRunes(); var newResult = await runes.GetCountRunes();

@ -94,9 +94,6 @@ namespace ApiTests
var oldResult = await skins.GetCountSkins(); var oldResult = await skins.GetCountSkins();
await skins.Post(SkinDto); await skins.Post(SkinDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.SkinsMgr.GetNbItems(); var newTotal = await stub.SkinsMgr.GetNbItems();
var newResult = await skins.GetCountSkins(); var newResult = await skins.GetCountSkins();

Loading…
Cancel
Save