You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LolProject/src/EntityFramework_LoL/Sources/Tests/ApiTests/RunesControllerTest.cs

179 lines
5.2 KiB

using ApiLol.Controllers;
using DTO;
using DTO.enums;
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 RunesControllerTest
{
private readonly StubData stub;
private readonly RunesController runes;
public RunesControllerTest()
{
stub = new StubData();
runes = new RunesController(stub, new NullLogger<RunesController>());
}
[TestMethod]
public async Task TestGetRunes()
{
//Arrange
//Act
var total = await stub.RunesMgr.GetNbItems();
var rune = await runes.Get(new PageRequest());
//Assert
var objectResult = rune as OkObjectResult;
Assert.IsNotNull(objectResult);
var runesResult = objectResult.Value as PageResponse<RuneDto>;
Assert.IsNotNull(runesResult);
var result = runesResult.Data as IEnumerable<RuneDto>;
Assert.IsNotNull(result);
Assert.AreEqual(result.Count(), total);
Assert.AreEqual(total, runesResult.total);
}
[TestMethod]
public async Task TestPostRune()
{
//Arange
var runeDto = new RuneDto
{
Name = "Project",
Description = "Test",
Icon = "",
Image = new LargeImageDto(),
Family = RuneFamilyDto.Precision
};
//Act
var total = await stub.RunesMgr.GetNbItems();
var runesResult = await runes.Post(runeDto);
//Assert
var objectResult = runesResult as CreatedAtActionResult;
Assert.IsNotNull(objectResult);
var isRuneDto = objectResult?.Value as RuneDto;
Assert.IsNotNull(isRuneDto);
Assert.AreEqual(total + 1, await stub.RunesMgr.GetNbItems());
}
[TestMethod]
public async Task TestCountChampion()
{
//Arange
var runeDto = new RuneDto
{
Name = "Project",
Description = "Test",
Icon = "",
Image = new LargeImageDto(),
Family = RuneFamilyDto.Domination
};
//Act
var oldTotal = await stub.RunesMgr.GetNbItems();
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();
//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 TestPutSkin()
{
//Arange
var runeDto = new RuneDto
{
Name = "Project",
Description = "Test",
Icon = "",
Image = new LargeImageDto(),
Family = RuneFamilyDto.Precision
};
var runeDtoPut = new RuneDto
{
Name = "New Project",
Description = "new Test",
Icon = "",
Image = new LargeImageDto(),
Family = RuneFamilyDto.Unknown
};
//Act
await runes.Post(runeDto);
var runesResult = await runes.Put(runeDto.Name, runeDtoPut);
//Assert
var objectResult = runesResult as OkObjectResult;
Assert.IsNotNull(objectResult);
var rune = objectResult?.Value as RuneDto;
Assert.IsNotNull(rune);
Assert.AreNotEqual(runeDto.Description, rune.Description);
Assert.AreNotEqual(runeDto.Family, rune.Family);
Assert.AreEqual(runeDtoPut.Description, rune.Description);
Assert.AreEqual(runeDtoPut.Family, rune.Family);
}
[TestMethod]
public async Task TestDeleteChampion()
{
//Arange
//Act
var total = await stub.RunesMgr.GetNbItems();
var runesResult = await runes.Delete("Conqueror");
//Assert
var objectResult = runesResult as OkObjectResult;
Assert.IsNotNull(objectResult);
Assert.AreEqual(objectResult.Value, true);
Assert.AreNotEqual(await stub.RunesMgr.GetNbItems(), total);
}
}
}