174 lines
8.2 KiB
C#
174 lines
8.2 KiB
C#
using System;
|
|
using Moq;
|
|
using NUnit.Framework;
|
|
using LCU.Library.Internal.DocumentIngestorModels.Models;
|
|
using LCU.API.Internal.DocumentIngestor.Services.IngestionOperationServices;
|
|
using LCU.Api.Internal.DispatcherSharedLib.Utilities;
|
|
using LCU.API.Internal.DocumentIngestor.Services.MicroApiServices;
|
|
using LCU.API.Internal.DocumentIngestor.Configurations;
|
|
using LCU.Library.Internal.DispatcherModels.Models;
|
|
using LCU.Library.Internal.Exceptions;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using LCU.Library.Internal.DispatcherModels.Entities;
|
|
using LCU.Library.Internal.DocumentIngestorModels.Enums;
|
|
using LCU.Api.Internal.DispatcherSharedLib.BuilderServices;
|
|
using LCU.Library.Internal.DispatcherModels.Enums;
|
|
using LCU.Library.Internal.FileOperationsModels.Models;
|
|
|
|
namespace LCU.API.Internal.DocumentIngestorTests.Services.IngestionOperationServices;
|
|
|
|
public class BatchIngestionServiceTest
|
|
{
|
|
private BatchIngestionService _batchIngestionService;
|
|
private ApiConfiguration _apiConfiguration;
|
|
private DispatcherJobCreationConfiguration _dispatcherJobCreationConfiguration;
|
|
private Mock<IFileOperationsApiService> _mockFileOperationsApiService;
|
|
private Mock<IRequestBuilderService> _mockDispatcherRequestBuilder;
|
|
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
_apiConfiguration = new ApiConfiguration
|
|
{
|
|
TimeZone = "America/Chicago"
|
|
};
|
|
_dispatcherJobCreationConfiguration = new DispatcherJobCreationConfiguration
|
|
{
|
|
DocumentIngestorDispatcherErrorRecipients = new List<string>
|
|
{
|
|
"[email protected]"
|
|
},
|
|
JobTags = new List<JobTag>
|
|
{
|
|
new JobTag
|
|
{
|
|
JobTagId = 0,
|
|
JobId = 0,
|
|
TagId = 1
|
|
}
|
|
}
|
|
};
|
|
_mockFileOperationsApiService = new Mock<IFileOperationsApiService>();
|
|
_mockDispatcherRequestBuilder = new Mock<IRequestBuilderService>();
|
|
_batchIngestionService = new BatchIngestionService
|
|
(
|
|
_apiConfiguration,
|
|
_dispatcherJobCreationConfiguration,
|
|
_mockFileOperationsApiService.Object,
|
|
_mockDispatcherRequestBuilder.Object
|
|
);
|
|
}
|
|
|
|
[Test]
|
|
public void HandleBatchIngestion_ArgumentNullException_RequestNull()
|
|
{
|
|
BatchIngestionRequest request = null;
|
|
Assert.ThrowsAsync<ArgumentNullException>(async () => await _batchIngestionService.HandleBatchIngestion(request));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.CreateJob(It.IsAny<JobDetails>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Never);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<CreateDirectoryRequest>(), It.IsAny<WorkItemDetails>(), ActionType.CreateDirectory), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<IngestorRequest>(), It.IsAny<WorkItemDetails>(), ActionType.DocumentIngestor), Times.Never);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.SendDispatcherRequest(null), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void HandleBatchIngestion_ServiceException_BuildDynamicDirectoryList_ThrowsException()
|
|
{
|
|
var request = new BatchIngestionRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
IngestorType = IngestorTypes.FosTaxStatement
|
|
};
|
|
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
Assert.ThrowsAsync<ServiceException>(async () => await _batchIngestionService.HandleBatchIngestion(request));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.CreateJob(It.IsAny<JobDetails>()), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<CreateDirectoryRequest>(), It.IsAny<WorkItemDetails>(), ActionType.CreateDirectory), Times.Never);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<IngestorRequest>(), It.IsAny<WorkItemDetails>(), ActionType.DocumentIngestor), Times.Never);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.SendDispatcherRequest(null), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandleBatchIngestion_BuildDynamicFileList_ThrowsException()
|
|
{
|
|
var request = new BatchIngestionRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
IngestorType = IngestorTypes.FosTaxStatement
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
_mockDispatcherRequestBuilder.Setup(x => x.CreateJob(It.IsAny<JobDetails>()));
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>())).ThrowsAsync(new Exception("Error"));
|
|
|
|
await _batchIngestionService.HandleBatchIngestion(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.CreateJob(It.IsAny<JobDetails>()), Times.Exactly(2));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<CreateDirectoryRequest>(), It.IsAny<WorkItemDetails>(), ActionType.CreateDirectory), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<IngestorRequest>(), It.IsAny<WorkItemDetails>(), ActionType.DocumentIngestor), Times.Never);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.SendDispatcherRequest(null), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HandleBatchIngestion_Success()
|
|
{
|
|
var request = new BatchIngestionRequest
|
|
{
|
|
RootBasePath = "\\\\Tester\\path",
|
|
ParentDynamicDirectory = "TestParentDynamicDirectory",
|
|
DynamicIndexFileName = "TestIndexFile",
|
|
IngestorType = IngestorTypes.FosTaxStatement,
|
|
IngestionDate = Convert.ToDateTime("1/1/2022")
|
|
};
|
|
|
|
var dynamicDirectoryListResult = new List<string>
|
|
{
|
|
"TestParentDynamicDirectory1",
|
|
"TestParentDynamicDirectory2"
|
|
};
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>())).ReturnsAsync(dynamicDirectoryListResult);
|
|
_mockDispatcherRequestBuilder.Setup(x => x.CreateJob(It.IsAny<JobDetails>()));
|
|
|
|
var dynamicFileListRequest1 = new DynamicFileListRequest
|
|
{
|
|
Path = "\\\\Tester\\path\\01012022\\TestParentDynamicDirectory1\\",
|
|
Filename = "TestIndexFile",
|
|
DynamicFileSettings = null
|
|
};
|
|
var dynamicFileResult1 = "TestIndexFile1";
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(x => x.Path == dynamicFileListRequest1.Path))).ReturnsAsync(dynamicFileResult1);
|
|
|
|
var dynamicFileListRequest2 = new DynamicFileListRequest
|
|
{
|
|
Path = "\\\\Tester\\path\\01012022\\TestParentDynamicDirectory2\\",
|
|
Filename = "TestIndexFile",
|
|
DynamicFileSettings = null
|
|
};
|
|
var dynamicFileResult2 = "TestIndexFile2";
|
|
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFile(It.Is<DynamicFileListRequest>(x => x.Path == dynamicFileListRequest2.Path))).ReturnsAsync(dynamicFileResult2);
|
|
|
|
await _batchIngestionService.HandleBatchIngestion(request);
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicDirectoryList(It.IsAny<DynamicDirectoryListRequest>()), Times.Once);
|
|
_mockDispatcherRequestBuilder.Verify(x => x.CreateJob(It.IsAny<JobDetails>()), Times.Exactly(2));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<CreateDirectoryRequest>(), It.IsAny<WorkItemDetails>(), ActionType.CreateDirectory), Times.Exactly(2));
|
|
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFile(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.AddWorkItem(It.IsAny<IngestorRequest>(), It.IsAny<WorkItemDetails>(), ActionType.DocumentIngestor), Times.Exactly(2));
|
|
_mockDispatcherRequestBuilder.Verify(x => x.SendDispatcherRequest(null), Times.Exactly(2));
|
|
}
|
|
}
|
|
|