using System; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; using LCU.Library.Internal.Exceptions; using LCU.Api.Internal.FileOperations.Controllers; using LCU.Library.Internal.FileOperationsModels.Models; using System.Threading.Tasks; using LCU.Api.Internal.FileOperations.Services.QueueServices; namespace LCU.Api.Internal.FileOperationsTests.Controllers { public class IndexFileControllerTest { private IndexFileController _controller; private Mock _mockQueueFileOperationsService; public IndexFileControllerTest() { _mockQueueFileOperationsService = new Mock(); _controller = new IndexFileController(_mockQueueFileOperationsService.Object); } [Fact] public async Task BatchPdfParser_OK() { var request = new ExtractIndexFileDataRequest() { IndexFilePath = "\\test\test", IndexFileName = "Test.csv" }; _mockQueueFileOperationsService.Setup(service => service.QueueFileOperations(It.IsAny(), It.IsAny())).Verifiable(); var result = await _controller.QueueExtractIndexFileData(request); Assert.NotNull(result); var acceptedResult = result as AcceptedResult; Assert.NotNull(acceptedResult); Assert.Equal(202, acceptedResult!.StatusCode); _mockQueueFileOperationsService.Verify(); } [Fact] public async Task ExtractIndexFileDataRequest_ServiceException_InternalServerError() { var request = new ExtractIndexFileDataRequest() { IndexFilePath = "\\test\test", IndexFileName = "Test.csv" }; _mockQueueFileOperationsService.Setup(service => service.QueueFileOperations(It.IsAny(), It.IsAny())) .Throws(new ServiceException("Thrown From Unit Test")).Verifiable(); var result = await _controller.QueueExtractIndexFileData(request); Assert.NotNull(result); var statusResult = result as ObjectResult; Assert.NotNull(statusResult); Assert.Equal(500, statusResult!.StatusCode); _mockQueueFileOperationsService.Verify(); } [Fact] public async Task ExtractIndexFileDataRequest_UnexpectedException_InternalServerError() { var request = new ExtractIndexFileDataRequest() { IndexFilePath = "\\test\test", IndexFileName = "Test.csv" }; _mockQueueFileOperationsService.Setup(service => service.QueueFileOperations(It.IsAny(), It.IsAny())) .Throws(new Exception("Thrown From Unit Test")).Verifiable(); var result = await _controller.QueueExtractIndexFileData(request); Assert.NotNull(result); var statusResult = result as StatusCodeResult; Assert.NotNull(statusResult); Assert.Equal(500, statusResult!.StatusCode); _mockQueueFileOperationsService.Verify(); } } }