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
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
[HttpPut("{name}")]
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
[HttpDelete("{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
{
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())
{
_logger.LogWarning("{name} was not found", name);
@ -135,5 +160,22 @@ namespace ApiLol.Controllers
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);
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());
if (dtos.IsNullOrEmpty())
{

@ -1,6 +1,7 @@
using ApiLol.Mapper.enums;
using DTO;
using Model;
using static Model.RunePage;
namespace ApiLol.Mapper
{
@ -12,17 +13,26 @@ namespace ApiLol.Mapper
return new RunePageDto()
{
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)
{
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);
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;

@ -9,7 +9,7 @@ namespace DTO
public partial class RunePageDto
{
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();
await champs.Post(ChampionDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.ChampionsMgr.GetNbItems();
var newResult = await champs.GetCountChampions();

@ -88,9 +88,6 @@ namespace ApiTests
var oldResult = await champs.GetCountChampions();
await champs.Post(ChampionDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.ChampionsMgr.GetNbItems();
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;
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();
await runes.Post(runeDto);
var objectResult = oldResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var newTotal = await stub.RunesMgr.GetNbItems();
var newResult = await runes.GetCountRunes();

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

Loading…
Cancel
Save