using System; using System.Collections.Generic; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApi.Services; using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.Library.Internal.IncentiveApiModels.Enums; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; using LCU.API.Internal.Operations.IncentiveApi.Controllers; using LCU.Library.Internal.IncentiveApiModels.Common; using LCU.API.Internal.Operations.IncentiveApi.Exceptions; namespace Application.UnitTests.Controllers { public class DeadActivityControllerTest { private DeadActivityController _controller; private Mock _mockDeadActivityService; [SetUp] public void Setup() { _mockDeadActivityService = new Mock(); _controller = new DeadActivityController(_mockDeadActivityService.Object); } [Test] public async Task Get_OK() { var filter = new DeadActivityFilter() { Limit = 999, Page = 1 }; var results = new PagedResult(); results.Items = new List() { new DeadActivity("1234", SystemType.Action, DeadActivityReason.Other, "test") }; results.Total = 1; _mockDeadActivityService .Setup(service => service.ListByFilterAsync(filter)).ReturnsAsync(results); var result = await _controller.Get(filter); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); } [Test] public async Task Get_Single_Ok() { _mockDeadActivityService.Setup(x => x.GetDeadActivity(5)) .ReturnsAsync(new DeadActivity("1234", SystemType.Action, DeadActivityReason.Other, "test")); var result = await _controller.Get(5); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); var value = okResult.Value as DeadActivity; Assert.NotNull(value); Assert.AreEqual("1234", value.SourceId); } [Test] public async Task Get_Single_NotFound() { _mockDeadActivityService.Setup(x => x.GetDeadActivity(1)) .ThrowsAsync(new NotFoundException("Not Found")); var result = await _controller.Get(1); Assert.NotNull(result); var badRequestResult = result as BadRequestObjectResult; Assert.NotNull(badRequestResult); Assert.AreEqual(400, badRequestResult.StatusCode); Assert.AreEqual("DeadActivity Not Found.", badRequestResult.Value); } [Test] public async Task Get_Single_Exception() { _mockDeadActivityService.Setup(x => x.GetDeadActivity(1)) .ThrowsAsync(new Exception("Internal Server Error")); var result = await _controller.Get(1); Assert.NotNull(result); var badResult = result as StatusCodeResult; Assert.NotNull(badResult); Assert.AreEqual(500, badResult.StatusCode); } [Test] public async Task ProcessDeadActivityState_Ok() { var deadActivity = new DeadActivity("1234", SystemType.Action, DeadActivityReason.Other, "test"); _mockDeadActivityService.Setup(mock => mock.ProcessDeadActivity(1,2)) .ReturnsAsync(deadActivity); var result = await _controller.Delete(1,2); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); } [Test] public async Task ProcessDeadActivityState_Ok_NoLink() { var deadActivity = new DeadActivity("1234", SystemType.Action, DeadActivityReason.Other, "test"); _mockDeadActivityService.Setup(mock => mock.ProcessDeadActivity(1,-1)) .ReturnsAsync(deadActivity); var result = await _controller.Delete(1); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); } } }