using System; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApi.Services.QueueServices; using LCU.Library.Internal.Exceptions; using LCU.Library.Internal.IncentiveApiModels.Requests; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; using LCU.API.Internal.Operations.IncentiveApi.Controllers; using LCU.API.Internal.Operations.IncentiveApi.Services; namespace Application.UnitTests.Controllers { public class ActivityImportControllerTest { private ActivityImportController _controller; private Mock _mockQueueCreditCardImportService; private Mock _mockQueueVehicleImportService; private Mock _mockQueueAlliedGapMbpService; private Mock _mockQueueActionCreditCardService; private Mock _mockQueueActionVehicleService; private Mock _mockEStatementService; [SetUp] public void Setup() { _mockQueueCreditCardImportService = new Mock(); _mockQueueVehicleImportService = new Mock(); _mockQueueActionVehicleService = new Mock(); _mockQueueActionCreditCardService = new Mock(); _mockQueueAlliedGapMbpService = new Mock(); _controller = new ActivityImportController(_mockQueueCreditCardImportService.Object, _mockQueueVehicleImportService.Object, _mockQueueActionCreditCardService.Object, _mockQueueActionVehicleService.Object, _mockQueueAlliedGapMbpService.Object); } [Test] public async Task QueueCreditCardImportRequest_Accepted() { _mockQueueCreditCardImportService.Setup(x => x.QueueCreditCardSalesImport(It.IsAny())); var result = await _controller.QueueCreditCardImportRequest(It.IsAny()); var acceptedResult = result as AcceptedResult; Assert.NotNull(acceptedResult); Assert.AreEqual(202, acceptedResult.StatusCode); } [Test] public async Task QueueCreditCardImportRequest_ServiceFails_ServiceException() { _mockQueueCreditCardImportService.Setup(x => x.QueueCreditCardSalesImport(It.IsAny())) .ThrowsAsync(new ServiceException("Failure")); var result = await _controller.QueueCreditCardImportRequest(It.IsAny()); var objectResult = result as ObjectResult; Assert.NotNull(objectResult); Assert.AreEqual(500, objectResult.StatusCode); } [Test] public async Task QueueCreditCardImportRequest_ServiceFails_Exception() { _mockQueueCreditCardImportService.Setup(x => x.QueueCreditCardSalesImport(It.IsAny())) .ThrowsAsync(new Exception("Failure")); var result = await _controller.QueueCreditCardImportRequest(It.IsAny()); var objectResult = result as StatusCodeResult; Assert.NotNull(objectResult); Assert.AreEqual(500, objectResult.StatusCode); } [Test] public async Task QueueIndirectVehicleImportRequest_Accepted() { _mockQueueVehicleImportService.Setup(x => x.QueueIndirectVehicleSalesImport(It.IsAny())); var result = await _controller.QueueIndirectVehicleImportRequest(It.IsAny()); var acceptedResult = result as AcceptedResult; Assert.NotNull(acceptedResult); Assert.AreEqual(202, acceptedResult.StatusCode); } [Test] public async Task QueueIndirectVehicleImportRequest_ServiceFails_ServiceException() { _mockQueueVehicleImportService.Setup(x => x.QueueIndirectVehicleSalesImport(It.IsAny())) .ThrowsAsync(new ServiceException("Failure")); var result = await _controller.QueueIndirectVehicleImportRequest(It.IsAny()); var objectResult = result as ObjectResult; Assert.NotNull(objectResult); Assert.AreEqual(500, objectResult.StatusCode); } [Test] public async Task QueueeIndirectVehicleImportRequest_ServiceFails_Exception() { _mockQueueVehicleImportService.Setup(x => x.QueueIndirectVehicleSalesImport(It.IsAny())) .ThrowsAsync(new Exception("Failure")); var result = await _controller.QueueIndirectVehicleImportRequest(It.IsAny()); var objectResult = result as StatusCodeResult; Assert.NotNull(objectResult); Assert.AreEqual(500, objectResult.StatusCode); } } }