579 lines
32 KiB
C#
579 lines
32 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Moq;
|
|
using NUnit.Framework;
|
|
using LCU.Library.Internal.DocumentIngestorModels.Models;
|
|
using LCU.Library.Internal.LcuMassTransitModels;
|
|
using LCU.Library.Internal.DocumentIngestorModels.Entities;
|
|
using LCU.Library.Internal.DocumentIngestorModels.Enums;
|
|
using LCU.Library.Internal.Exceptions;
|
|
using LCU.API.Internal.DocumentIngestor.Services.IngestionOperationServices;
|
|
using LCU.API.Internal.DocumentIngestor.Services.MicroApiServices;
|
|
using LCU.API.Internal.DocumentIngestor.Configurations;
|
|
using LCU.API.Internal.DocumentIngestor.Services;
|
|
using LCU.API.Internal.DocumentIngestor.Services.QueueServices;
|
|
using LCU.API.Internal.DocumentIngestor.Services.PdfParserServices;
|
|
using LCU.Library.Internal.FileOperationsModels.Models;
|
|
using LCU.Library.Internal.FileOperationsModels.Models.NameSettings;
|
|
using LCU.Library.Internal.LCUServiceFactory.Services;
|
|
|
|
namespace LCU.API.Internal.DocumentIngestorTests.Services.IngestionOperationServices;
|
|
|
|
public class PdfPartitionerServiceTest
|
|
{
|
|
private PdfPartitionerService _pdfPartitionerService;
|
|
private ConnectionConfiguration _connectionConfiguration;
|
|
private Mock<IPdfPartitionerRunInfoService> _mockPdfPartitionerRunInfoService;
|
|
private Mock<IFileOperationsApiService> _mockFileOperationsApiService;
|
|
private Mock<IQueuePdfPartitionerCompletionService> _mockQueuePdfPartitionerCompletionService;
|
|
private Mock<ILcuServiceFactory<IPdfParserService>> _mockLcuServiceFactory;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
_connectionConfiguration = new ConnectionConfiguration
|
|
{
|
|
HostUrl = "test.com",
|
|
UserName = "testUserName",
|
|
Password = "testpassword"
|
|
};
|
|
var receiveEndpointConfigurations = new ReceiveEndpointConfigurations
|
|
{
|
|
PdfPartitionerCompletionEndpoint = new ReceiveEndpointConfiguration
|
|
{
|
|
ReceiveEndpoint = "testCompletionReceiveEndpoint",
|
|
ReceiveEndpointType = "exchange"
|
|
}
|
|
};
|
|
_mockPdfPartitionerRunInfoService = new Mock<IPdfPartitionerRunInfoService>();
|
|
_mockFileOperationsApiService = new Mock<IFileOperationsApiService>();
|
|
_mockQueuePdfPartitionerCompletionService = new Mock<IQueuePdfPartitionerCompletionService>();
|
|
_mockLcuServiceFactory = new Mock<ILcuServiceFactory<IPdfParserService>>();
|
|
_pdfPartitionerService = new PdfPartitionerService(_connectionConfiguration,
|
|
receiveEndpointConfigurations,
|
|
_mockPdfPartitionerRunInfoService.Object,
|
|
_mockFileOperationsApiService.Object,
|
|
_mockQueuePdfPartitionerCompletionService.Object,
|
|
_mockLcuServiceFactory.Object);
|
|
}
|
|
|
|
[Test]
|
|
public void HandlePdfPartition_ArgumentNullException_RequestNull()
|
|
{
|
|
PdfPartitionerRequest request = null;
|
|
Assert.ThrowsAsync<ArgumentNullException>(async () => await _pdfPartitionerService.HandlePdfPartition(request));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Never);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockLcuServiceFactory.Verify(x => x.GetService(It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void HandlePdfPartition_ServiceException_BuildDynamicDirectoryList_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.FosLoanStatement
|
|
};
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
Assert.ThrowsAsync<ServiceException>(async () => await _pdfPartitionerService.HandlePdfPartition(request));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockLcuServiceFactory.Verify(x => x.GetService(It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void HandlePdfPartition_ServiceException_PartitionerRunInfo_SaveAsync_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.FosLoanStatement
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
Assert.ThrowsAsync<ServiceException>(async () => await _pdfPartitionerService.HandlePdfPartition(request));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandlePdfPartition_ServiceException_DetermineIndexFile_BuildDynamicFileList_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.FosLoanStatement,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName",
|
|
DynamicPdfName = "TestDynamicPdfname"
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.FosLoanStatement, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest => dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ThrowsAsync(new Exception("Error"));
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandlePdfPartition_ServiceException_DetermineAllPdfsInDirectory_BuildDynamicFile_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.FosLoanStatement,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName",
|
|
DynamicPdfName = "TestDynamicPdfname"
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.FosLoanStatement, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ReturnsAsync("TestDynamicIndexFileName");
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest => dynamicFileListRequest.Filename == "{Regex0}")))
|
|
.ThrowsAsync(new Exception("Error"));
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandlePdfPartition_ServiceException_FosLoanStatementPdfService_DetermineBatchParsePdfRequest_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.FosLoanStatement,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName.txt",
|
|
DynamicPdfName = "TestDynamicPdfname",
|
|
DynamicPdfSettings = new DynamicNameSetting()
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.FosLoanStatement, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ReturnsAsync("TestDynamicIndexFileName");
|
|
|
|
var pdfFileList = new List<string>
|
|
{
|
|
"TestDynamicPdfname.pdf"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == "{Regex0}.(?i:pdf)")))
|
|
.ReturnsAsync(pdfFileList);
|
|
|
|
indexService.Setup(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandlePdfPartition_ServiceException_QueueBatchPdfParser_QueuedTwice()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.FosLoanStatement,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName",
|
|
DynamicPdfName = "TestDynamicPdfname"
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.FosLoanStatement, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ReturnsAsync("TestDynamicIndexFileName");
|
|
|
|
var pdfFileList = new List<string>
|
|
{
|
|
"TestDynamicPdfname.pdf"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == "{Regex0}.(?i:pdf)")))
|
|
.ReturnsAsync(pdfFileList);
|
|
|
|
var batchPdfParserRequest = new BatchParsePdfRequest
|
|
{
|
|
RootPath = "\\\\Tester\\path",
|
|
PdfName = "TestDynamicPdfname",
|
|
BatchPdfs = new List<BatchPdf>
|
|
{
|
|
new BatchPdf
|
|
{
|
|
PageStart = 1,
|
|
PageStop = 2,
|
|
ParsedPdfname = "TestDynamicPdfname_Test"
|
|
}
|
|
}
|
|
};
|
|
indexService.Setup(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
|
.ReturnsAsync(batchPdfParserRequest);
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Exactly(2));
|
|
}
|
|
|
|
[Test]
|
|
public void Osg_HandlePdfPartition_ArgumentNullException_RequestNull()
|
|
{
|
|
PdfPartitionerRequest request = null;
|
|
Assert.ThrowsAsync<ArgumentNullException>(async () => await _pdfPartitionerService.HandlePdfPartition(request));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Never);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockLcuServiceFactory.Verify(x => x.GetService(It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
[Test]
|
|
public void Osg_HandlePdfPartition_ServiceException_BuildDynamicDirectoryList_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.OsgDnaNoticesDocument
|
|
};
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
Assert.ThrowsAsync<ServiceException>(async () => await _pdfPartitionerService.HandlePdfPartition(request));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void Osg_HandlePdfPartition_ServiceException_PartitionerRunInfo_SaveAsync_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.OsgDnaNoticesDocument
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
Assert.ThrowsAsync<ServiceException>(async () => await _pdfPartitionerService.HandlePdfPartition(request));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockLcuServiceFactory.Verify(x => x.GetService(It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task Osg_HandlePdfPartition_ServiceException_DetermineIndexFile_BuildDynamicFileList_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.OsgDnaNoticesDocument,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName",
|
|
DynamicPdfName = "TestDynamicPdfname"
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.OsgDnaNoticesDocument, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest => dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ThrowsAsync(new Exception("Error"));
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockLcuServiceFactory.Verify(x => x.GetService(It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task Osg_HandlePdfPartition_ServiceException_DetermineAllPdfsInDirectory_BuildDynamicFile_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.OsgDnaNoticesDocument,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName",
|
|
DynamicPdfName = "TestDynamicPdfname"
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.OsgDnaNoticesDocument, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ReturnsAsync("TestDynamicIndexFileName");
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest => dynamicFileListRequest.Filename == "{Regex0}")))
|
|
.ThrowsAsync(new Exception("Error"));
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockLcuServiceFactory.Verify(x => x.GetService(It.IsAny<string>()), Times.Never);
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandlePdfPartition_ServiceException_OsgDnaNoticesPdfService_DetermineBatchParsePdfRequest_ThrowsException()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.OsgDnaNoticesDocument,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName.txt",
|
|
DynamicPdfName = "TestDynamicPdfname",
|
|
DynamicPdfSettings = new DynamicNameSetting()
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.OsgDnaNoticesDocument, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ReturnsAsync("TestDynamicIndexFileName");
|
|
|
|
var pdfFileList = new List<string>
|
|
{
|
|
"TestDynamicPdfname.pdf"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == "{Regex0}.(?i:pdf)")))
|
|
.ReturnsAsync(pdfFileList);
|
|
|
|
indexService.Setup(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task Osg_HandlePdfPartition_ServiceException_QueueBatchPdfParser_QueuedTwice()
|
|
{
|
|
var request = new PdfPartitionerRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
PdfParserType = PdfParserTypes.OsgDnaNoticesDocument,
|
|
DynamicIndexFileName = "TestDynamicIndexFileName",
|
|
DynamicPdfName = "TestDynamicPdfname"
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
|
|
var indexService = new Mock<IPdfParserService>();
|
|
_mockLcuServiceFactory.Setup(x => x.GetService(request.PdfParserType)).Returns(indexService.Object);
|
|
|
|
var pdfPartitionerRunInfo = new PdfPartitionerRunInfo(Convert.ToDateTime("1/1/2022"), PdfParserTypes.OsgDnaNoticesDocument, "\\\\Tester\\path", 2);
|
|
_mockPdfPartitionerRunInfoService.Setup(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>())).ReturnsAsync(pdfPartitionerRunInfo);
|
|
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == request.DynamicIndexFileName)))
|
|
.ReturnsAsync("TestDynamicIndexFileName");
|
|
|
|
var pdfFileList = new List<string>
|
|
{
|
|
"TestDynamicPdfname.pdf"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.Is<DynamicFileListRequest>(dynamicFileListRequest =>
|
|
dynamicFileListRequest.Filename == "{Regex0}.(?i:pdf)")))
|
|
.ReturnsAsync(pdfFileList);
|
|
|
|
var batchPdfParserRequest = new BatchParsePdfRequest
|
|
{
|
|
RootPath = "\\\\Tester\\path",
|
|
PdfName = "TestDynamicPdfname",
|
|
BatchPdfs = new List<BatchPdf>
|
|
{
|
|
new BatchPdf
|
|
{
|
|
PageStart = 1,
|
|
PageStop = 2,
|
|
ParsedPdfname = "TestDynamicPdfname_Test"
|
|
}
|
|
}
|
|
};
|
|
indexService.Setup(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
|
.ReturnsAsync(batchPdfParserRequest);
|
|
|
|
await _pdfPartitionerService.HandlePdfPartition(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockPdfPartitionerRunInfoService.Verify(x => x.SaveAsync(It.IsAny<PdfPartitionerRunInfo>()), Times.Once);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
indexService.Verify(x => x.DetermineBatchParsePdfRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
|
|
_mockQueuePdfPartitionerCompletionService.Verify(x => x.QueuePdfPartitionerCompletionRequest(It.IsAny<PdfPartitionerResult>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.QueueBatchPdfParser(It.IsAny<BatchParsePdfRequest>()), Times.Exactly(2));
|
|
}
|
|
} |