using System; using System.Threading.Tasks; using System.Collections.Generic; using Moq; using NUnit.Framework; using LCU.API.Internal.DocumentIngestor.Services.MicroApiServices; using LCU.API.Internal.DocumentIngestor.Services.IndexParserServices; using LCU.Library.Internal.DocumentIngestorModels.Models; using LCU.Library.Internal.DocumentIngestorModels.Enums; using LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments; using LCU.Library.Internal.LCUServiceFactory.Configurations; namespace LCU.API.Internal.DocumentIngestorTests.Services.IndexParserServices; public class FosTaxStatementIndexServiceTest { private FosTaxStatementIndexService _fosTaxStatementIndexService; private Mock _mockFileOperationsApiService; [SetUp] public void Setup() { _mockFileOperationsApiService = new Mock(); var serviceFactoryConfiguration = new ServicesFactoryConfiguration { ServiceFactoryRegistrations = new List { new() { ServiceInterfaceName = "IIndexParserService", ServiceRegistrations = new List { new() { ServiceName = "IndexParserService", ServiceId = "4" }, new() { ServiceName = "IndexParserService", ServiceId = "0" } } } } }; _fosTaxStatementIndexService = new FosTaxStatementIndexService(_mockFileOperationsApiService.Object, serviceFactoryConfiguration); } [Test] public async Task HandleIndexRequest_IngestorRequest_Null_IngestorResult_Failure() { IngestorRequest request = null; var result = await _fosTaxStatementIndexService.HandleIndexRequest(request); Assert.IsTrue(result.FatalFailure); _mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny()), Times.Never); } [Test] public async Task HandleIndexRequest_IngestorRequest_Success() { var request = new IngestorRequest() { RootPath = "\\Test\\", IndexFileName = "Test.csv" }; var fileContent = "1099 - INT,999999999,Test Tester T,2012,12345674,0000000001.pdf"; _mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny())).ReturnsAsync(fileContent); var result = await _fosTaxStatementIndexService.HandleIndexRequest(request); Assert.IsFalse(result.FatalFailure); Assert.AreEqual(1, result.ProcessingRequests.Count); _mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny()), Times.Once); } [Test] public async Task HandleIndexRequest_IngestorRequest_GetFileContent_ThrowsException_Failure() { var request = new IngestorRequest() { RootPath = "\\Test\\", IndexFileName = "Test.csv" }; _mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny())).ThrowsAsync(new Exception("Error")); var result = await _fosTaxStatementIndexService.HandleIndexRequest(request); Assert.IsTrue(result.FatalFailure); _mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny()), Times.Once); } [Test] public void PrepareRunInfoAndProcessRequests_IngestorRunInfo_ProcessRequests_Created() { var request = new IngestorRequest() { RootPath = "\\Test\\", IndexFileName = "Test.csv", IngestorType = IngestorTypes.FosTaxStatement }; var documentMetaData = new List() { new FosTaxStatementDocument() { AccountNumber = "1", FileName = "1099-INT", PrimaryTIN = "1", FullName = "tester", PDF = "test.pdf" } }; var ingestorResult = new IngestorResult(); var result = _fosTaxStatementIndexService.PrepareRunInfoAndProcessRequests(request, documentMetaData, ingestorResult); Assert.IsFalse(result.FatalFailure); Assert.AreEqual(1, result.ProcessingRequests.Count); Assert.AreEqual("Test.csv", result.IngestorRunInfo.IndexFileName); Assert.AreEqual(IngestorTypes.FosTaxStatement, result.IngestorRunInfo.IngestorType); Assert.AreEqual("\\Test\\", result.IngestorRunInfo.IndexFilePath); } }