This commit is contained in:
Zeeshaun
2026-04-07 13:11:39 -05:00
parent d9931b3c36
commit e37826fe30
184 changed files with 2192 additions and 2196 deletions
@@ -1,130 +1,35 @@
using LCU.API.Internal.MemberPreferencesApi.Interfaces;
using LCU.API.Internal.MemberPreferencesApi.MicroApiServices;
using LCU.API.Internal.MemberPreferencesApi.Services.DnaAuditServices;
using LCU.API.Internal.MemberPreferencesApiLib.Repositories;
using LCU.Library.Internal.LCUServiceFactory.Services;
using Moq;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Linq;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
using LCU.API.Internal.MemberPreferencesApi.Services.QueueServices;
using LCU.API.Internal.MemberPreferencesApi.Interfaces;
using LCU.API.Internal.MemberPreferencesApi.Configuration;
using LCU.API.Internal.MemberPreferencesApiLib.Repositories;
using LCU.API.Internal.MemberPreferencesApi.Services.DnaAuditServices;
using LCU.API.Internal.MemberPreferencesApi.MicroApiServices;
namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
{
public class DNADataAuditProcessServiceTest
{
private Mock<ICoreApiWrapperService> _coreApiWrapperServiceMock;
private Mock<IQueueDnaAccountAuditService> _queueAccountMock;
private Mock<IQueueDnaAgreementAuditService> _queueAgreementMock;
private Mock<IQueueDnaOrganizationAuditService> _queueOrganizationMock;
private Mock<IScanBiCoreApiWrapperService> _scanBiCoreApiWrapperServiceMock;
private Mock<IDnaAuditProcessRepository> _dnaAuditProcessRepositoryMock;
private DNADataAuditProcessService _service;
private Mock<IDateTime> _dateTimeMock;
private DnaAuditProcessConfiguration _config;
private Mock<ILcuServiceFactory<IDNAAuditCheckService>> _serviceFactoryMock;
[SetUp]
public void Setup()
{
_dateTimeMock = new Mock<IDateTime>();
_config = new DnaAuditProcessConfiguration();
_coreApiWrapperServiceMock = new Mock<ICoreApiWrapperService>();
_queueAccountMock = new Mock<IQueueDnaAccountAuditService>();
_queueAgreementMock = new Mock<IQueueDnaAgreementAuditService>();
_queueOrganizationMock = new Mock<IQueueDnaOrganizationAuditService>();
_scanBiCoreApiWrapperServiceMock = new Mock<IScanBiCoreApiWrapperService>();
_dnaAuditProcessRepositoryMock = new Mock<IDnaAuditProcessRepository>();
_service = new DNADataAuditProcessService(_queueAccountMock.Object, _queueAgreementMock.Object, _queueOrganizationMock.Object,
_coreApiWrapperServiceMock.Object, _dateTimeMock.Object, _dnaAuditProcessRepositoryMock.Object, _config);
}
[Test]
public async Task RunDnaAuditProcessesChange_HandleProcessUpdate_Ok()
{
var processlistAccount = new List<DnaAuditProcess>
{
new DnaAuditProcess()
{
ConsecutiveFailures = 0,
DnaProcessType = DnaAuditProcessType.DNAAccounts,
LastUpdated = DateTime.Now,
ProcessId = 0,
}
};
var processlistAgreement = new List<DnaAuditProcess>
{
new DnaAuditProcess()
{
ConsecutiveFailures = 0,
DnaProcessType = DnaAuditProcessType.DNAAgreement,
LastUpdated = DateTime.Now,
ProcessId = 0,
}
};
var processlistOrg = new List<DnaAuditProcess>
{
new DnaAuditProcess()
{
ConsecutiveFailures = 0,
DnaProcessType = DnaAuditProcessType.DNAOrganization,
LastUpdated = DateTime.Now,
ProcessId = 0,
}
};
await _service.RunDataAuditProcesses();
await _service.AuditDNAAccountsForTimePeriod(DateTime.Now, processlistAccount.First());
var resultAccount = _service.HandleDnaAuditProcessSuccess(processlistAccount.First());
await _service.AuditDNAAgreementForTimePeriod(DateTime.Now, processlistAgreement.First());
var resultAgreement = _service.HandleDnaAuditProcessSuccess(processlistAgreement.First());
await _service.AuditDNAOrganizationForTimePeriod(DateTime.Now, processlistOrg.First());
var resultOrg = _service.HandleDnaAuditProcessSuccess(processlistOrg.First());
//assert
Assert.NotNull(resultAccount);
Assert.AreEqual(resultAccount.DnaProcessType, DnaAuditProcessType.DNAAccounts);
Assert.AreEqual(resultAccount.ConsecutiveFailures, 0);
Assert.NotNull(resultAgreement);
Assert.AreEqual(resultAgreement.DnaProcessType, DnaAuditProcessType.DNAAgreement);
Assert.AreEqual(resultAgreement.ConsecutiveFailures, 0);
Assert.NotNull(resultOrg);
Assert.AreEqual(resultOrg.DnaProcessType, DnaAuditProcessType.DNAOrganization);
Assert.AreEqual(resultOrg.ConsecutiveFailures, 0);
}
[Test]
public async Task RunDnaAuditProcessesChange_HandleProcessUpdateException_Ok()
{
var processlistAccount = new List<DnaAuditProcess>
{
new DnaAuditProcess()
{
ConsecutiveFailures = 0,
DnaProcessType = DnaAuditProcessType.DNAAccounts,
LastUpdated = DateTime.Now,
ProcessId = 0,
}
};
var ex = new Exception();
await _service.RunDataAuditProcesses();
await _service.AuditDNAAccountsForTimePeriod(DateTime.Now, processlistAccount.First());
var resultAccount = _service.HandleDnaAuditProcessException(processlistAccount.First(), ex);
//assert
Assert.NotNull(resultAccount);
Assert.AreEqual(resultAccount.DnaProcessType, DnaAuditProcessType.DNAAccounts);
Assert.AreEqual(resultAccount.ConsecutiveFailures, 1);
_serviceFactoryMock = new Mock<ILcuServiceFactory<IDNAAuditCheckService>>();
_service = new DNADataAuditProcessService(_coreApiWrapperServiceMock.Object,
_scanBiCoreApiWrapperServiceMock.Object,
_dateTimeMock.Object,
_dnaAuditProcessRepositoryMock.Object,
_serviceFactoryMock.Object);
}
}
}
@@ -1,223 +0,0 @@
using Moq;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using LCU.API.Internal.MemberPreferencesApi.Services;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Agreements;
using LCU.API.Internal.MemberPreferencesApi.Services.DnaAuditServices;
using LCU.API.Internal.MemberPreferencesApi.MicroApiServices;
using LCU.API.Internal.MemberPreferencesApi.Models.Requests;
namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
{
public class DNADataAuditServiceTest
{
private Mock<ICoreApiWrapperService> _coreApiWrapperServiceMock;
private Mock<IOptinService> _optinServiceMock;
private DNADataAuditService _service;
[SetUp]
public void Setup()
{
_coreApiWrapperServiceMock = new Mock<ICoreApiWrapperService>();
_optinServiceMock = new Mock<IOptinService>();
_service = new DNADataAuditService(_coreApiWrapperServiceMock.Object, _optinServiceMock.Object);
}
[Test]
public async Task HandleChangedFields_AccountChange_OK_UPDATE()
{
var account = new AgreementAccount
{
AccountNumber = 123456,
OvrDeliveryMethCD = "PRNT",
AccountOwner = new AgreementAccountOwner
{
AccountNumber = 123456,
AgreementNumber = 222,
PersonNumber = 123,
UserId = "1234"
}
};
var memberOptinSettings = new MemberOptInSettings
{
EStatements = null,
UniversalOptIn = "Electronic"
};
//setup
_coreApiWrapperServiceMock.Setup(x => x.GetAgreementAccountByAccountId(123456)).ReturnsAsync(account).Verifiable();
_optinServiceMock.Setup(x => x.GetMemberOptInSettings("1234")).ReturnsAsync(memberOptinSettings).Verifiable();
var request = new DnaFieldChangeRequest()
{
ConsecutiveFailures = 0,
DnaFieldIdInformation = 123456L,
DnaProcessType = DnaAuditProcessType.DNAAgreement,
LastUpdated = DateTime.Now,
ProcessId = 1
};
await _service.HandleAccountAuditCheck(request);
//assert
_coreApiWrapperServiceMock.Verify(x => x.UpdateAgreementAccountsDeliveryMethod(It.Is<List<long>>(list => list.Contains(123456)), It.Is<string>(x => x.Equals("WWW")), It.Is<string>(x => x.Equals("1234"))), Times.Once);
_coreApiWrapperServiceMock.Verify();
_optinServiceMock.Verify();
}
[Test]
public async Task HandleChangedFields_AccountChange_OK_DONTUPDATE()
{
var account = new AgreementAccount
{
AccountNumber = 123456,
OvrDeliveryMethCD = "PRNT",
AccountOwner = new AgreementAccountOwner
{
AccountNumber = 123456,
AgreementNumber = 222,
PersonNumber = 123,
UserId = "1234"
}
};
var memberOptinSettings = new MemberOptInSettings
{
EStatements = null,
UniversalOptIn = "Paper"
};
//setup
_coreApiWrapperServiceMock.Setup(x => x.GetAgreementAccountByAccountId(123456)).ReturnsAsync(account).Verifiable();
_optinServiceMock.Setup(x => x.GetMemberOptInSettings("1234"))
.ReturnsAsync(memberOptinSettings).Verifiable();
var request = new DnaFieldChangeRequest()
{
ConsecutiveFailures = 0,
DnaFieldIdInformation = 123456L,
DnaProcessType = DnaAuditProcessType.DNAAccounts,
LastUpdated = DateTime.Now,
ProcessId = 1
};
await _service.HandleAccountAuditCheck(request);
//assert
_coreApiWrapperServiceMock.Verify(x => x.UpdateAgreementAccountsDeliveryMethod(It.IsAny<List<long>>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_coreApiWrapperServiceMock.Verify();
_optinServiceMock.Verify();
}
[Test]
public async Task HandleChangedFields_AgreementChange_OK_UPDATE()
{
var agreement = new Agreement
{
AgreementNumber = 1127,
PersonNumber = 123,
UserId = "1234"
};
var accounts = new List<AgreementAccount>
{
new AgreementAccount{
AccountNumber = 123456,
OvrDeliveryMethCD = "PRNT",
TaxReportForPersonNumber = 123,
AccountOwner = new AgreementAccountOwner{
AccountNumber = 123456,
AgreementNumber = 1127,
PersonNumber = 123,
UserId = "1234"
}
}
};
var memberOptinSettings = new MemberOptInSettings
{
EStatements = null,
UniversalOptIn = "Electronic"
};
//setup
_coreApiWrapperServiceMock.Setup(x => x.GetAgreementByAgreementId(1127)).ReturnsAsync(agreement).Verifiable();
_coreApiWrapperServiceMock.Setup(x => x.GetAgreementAccountsByUserId("1234")).ReturnsAsync(accounts).Verifiable();
_optinServiceMock.Setup(x => x.GetMemberOptInSettings("1234")).ReturnsAsync(memberOptinSettings).Verifiable();
var request = new DnaFieldChangeRequest()
{
ConsecutiveFailures = 0,
DnaFieldIdInformation = 1127L,
DnaProcessType = DnaAuditProcessType.DNAAgreement,
LastUpdated = DateTime.Now,
ProcessId = 1
};
await _service.HandleAgreementAuditCheck(request);
//assert
_coreApiWrapperServiceMock.Verify(x => x.UpdateAgreementAccountsDeliveryMethod(It.Is<List<long>>(list => list.Contains(123456)), It.Is<string>(x => x.Equals("WWW")), It.Is<string>(x => x.Equals("1234"))), Times.Once);
_coreApiWrapperServiceMock.Verify();
_optinServiceMock.Verify();
}
[Test]
public async Task HandleChangedFields_OrganizationChange_OK_UPDATE()
{
var accounts = new List<AgreementAccount>
{
new AgreementAccount{
AccountNumber = 123456,
TaxReportForOrgNumber = 11267,
OvrDeliveryMethCD = "PRNT",
AccountOwner = new AgreementAccountOwner
{
AccountNumber = 123456,
AgreementNumber = 222,
PersonNumber = 123,
UserId = "1234"
}
}
};
var memberOptinSettings = new MemberOptInSettings
{
EStatements = null,
UniversalOptIn = "Electronic"
};
//setup
_coreApiWrapperServiceMock.Setup(x => x.GetAgreementAccountsByOrganizationId(1126)).ReturnsAsync(accounts).Verifiable();
_optinServiceMock.Setup(x => x.GetMemberOptInSettings("1234")).ReturnsAsync(memberOptinSettings).Verifiable();
var request = new DnaFieldChangeRequest()
{
ConsecutiveFailures = 0,
DnaFieldIdInformation = 1126L,
DnaProcessType = DnaAuditProcessType.DNAAgreement,
LastUpdated = DateTime.Now,
ProcessId = 1
};
//act
await _service.HandleOrganizationAuditCheck(request);
//assert
_coreApiWrapperServiceMock.Verify(x => x.UpdateAgreementAccountsDeliveryMethod(It.Is<List<long>>(list => list.Contains(123456)), It.Is<string>(x => x.Equals("WWW")), It.Is<string>(x => x.Equals("1234"))), Times.Once);
_coreApiWrapperServiceMock.Verify();
_optinServiceMock.Verify();
}
}
}
@@ -1,48 +1,45 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using LCU.API.Internal.MemberPreferencesApi.Configuration;
using LCU.API.Internal.MemberPreferencesApi.MicroApiServices;
using LCU.API.Internal.MemberPreferencesApi.Models;
using LCU.API.Internal.MemberPreferencesApi.Models.Requests;
using LCU.API.Internal.MemberPreferencesApi.Services.XdiServices;
using LCU.API.Internal.MemberPreferencesApiLib.Repositories;
using LCU.Library.Internal.LcuClassPatterns.CrudTests.Tests;
using LCU.Library.Internal.LcuClassPatterns.CrudTests.Utilities;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
using LCU.Library.Internal.LcuMassTransitModels;
using LCU.API.Internal.MemberPreferencesApiLib.Repositories;
using LCU.API.Internal.MemberPreferencesApi.Services.XdiServices;
using LCU.API.Internal.MemberPreferencesApi.MicroApiServices;
using Moq;
using Newtonsoft.Json;
using NUnit.Framework;
using LCU.API.Internal.MemberPreferencesApi.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
{
public class XdiBatchItemServiceTest
public class XdiBatchItemServiceTest : CrudServiceTest<XdiBatchProcessInfo>
{
private IXdiBatchService _xdiBatchItemService;
private Mock<IXdiBatchItemsRepository> _mockBatchItemsRepository;
private Mock<IXdiBatchProcessInfoRepository> _mockXdiBatchProcessInfoRepository;
private Mock<IUnitOfWork> _mockUnitOfWork;
private XdiSftpApiConfiguration _ftpConfiguration;
private Mock<IUnifiedOptInRepository> _mockUnifiedOptinRepository;
private Mock<IMemberPreferenceRepository> _mockMemberPreferenceRepository;
private Mock<IFtpApiService> _mockFtpApiService;
private ConnectionConfiguration _connectionConfiguration;
private ReceiveEndpointConfiguration _completionReceiveEndpoint;
private ReceiveEndpointConfigurations _endpointConfiguration;
private Mock<IFileOperationsApiService> _mockFileOperationsApiService;
[SetUp]
public void Setup()
{
_mockBatchItemsRepository = new Mock<IXdiBatchItemsRepository>();
_mockXdiBatchProcessInfoRepository = new Mock<IXdiBatchProcessInfoRepository>();
_mockUnitOfWork = new Mock<IUnitOfWork>();
_ftpConfiguration = new XdiSftpApiConfiguration();
_mockUnifiedOptinRepository = new Mock<IUnifiedOptInRepository>();
_mockMemberPreferenceRepository = new Mock<IMemberPreferenceRepository>();
_mockFtpApiService = new Mock<IFtpApiService>();
_endpointConfiguration = new ReceiveEndpointConfigurations();
_completionReceiveEndpoint = _endpointConfiguration.XdiBatchConfirmEndpoint;
_mockFileOperationsApiService = new Mock<IFileOperationsApiService>();
_xdiBatchItemService = new XdiBatchService(_mockBatchItemsRepository.Object, _mockUnitOfWork.Object,
_ftpConfiguration, _mockUnifiedOptinRepository.Object, _mockMemberPreferenceRepository.Object,
_connectionConfiguration, _endpointConfiguration, _mockFtpApiService.Object);
_mockUnifiedOptinRepository.Object, _mockMemberPreferenceRepository.Object,
_mockFileOperationsApiService.Object, _mockXdiBatchProcessInfoRepository.Object);
}
[Test]
@@ -226,7 +223,7 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
}
[Test]
public async Task CreateFtpQueryPayload_Ok()
public async Task CreateXdiBatchExport_MultipleResults_Ok()
{
var testFile = new XdiBatchFile
{
@@ -308,7 +305,26 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
UniversalOptIn = DeliveryPreference.Hold
});
var results = await _xdiBatchItemService.CreateFtpPayload(testFile);
var xdiBatchProcessInfo = new List<XdiBatchProcessInfo>
{
new()
{
XdiBatchProcessInfoId = (int)typeof(int).GetRandomValue(),
StartTimeStamp = DateTime.Now,
XdiBatchProcessStatus = XdiBatchProcessStatus.InProgress,
ApiResponse = "Started"
}
};
var request = new XdiBatchRequest()
{
XdiAppendFileRootBasePath = "test/test"
};
_mockXdiBatchProcessInfoRepository.Setup(x => x.FindBatchProcessInfoByStatus(XdiBatchProcessStatus.InProgress)).ReturnsAsync(xdiBatchProcessInfo)
.Verifiable();
var results = await _xdiBatchItemService.BuildXdiFiles(testFile, request.XdiAppendFileRootBasePath, xdiBatchProcessInfo.FirstOrDefault());
Assert.AreEqual(4, results.Count);
Assert.True(results.Exists(x => x.UserId == "100" && x.Value == "[email protected]"));
@@ -318,7 +334,7 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
}
[Test]
public async Task CreateFtpQueryPayload_No_Result_Ok()
public async Task CreateXdiBatchExport_Result_Ok()
{
var testFile = new XdiBatchFile
{
@@ -331,6 +347,17 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
}
};
var xdiBatchProcessInfo = new List<XdiBatchProcessInfo>
{
new()
{
XdiBatchProcessInfoId = (int)typeof(int).GetRandomValue(),
StartTimeStamp = DateTime.Now,
XdiBatchProcessStatus = XdiBatchProcessStatus.InProgress,
ApiResponse = "Started"
}
};
_mockUnifiedOptinRepository
.Setup(x => x.GetMemberOptInSettingsNoTracking("100")).ReturnsAsync(new MemberOptInSettings
{
@@ -341,8 +368,16 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
_mockUnifiedOptinRepository
.Setup(x => x.GetMemberOptInSettingsNoTracking(It.Is<string>(userId => int.Parse(userId) > 100)))
.Returns(Task.FromResult<MemberOptInSettings>(null));
var results = await _xdiBatchItemService.CreateFtpPayload(testFile);
_mockXdiBatchProcessInfoRepository.Setup(x => x.FindBatchProcessInfoByStatus(XdiBatchProcessStatus.InProgress)).ReturnsAsync(xdiBatchProcessInfo)
.Verifiable();
var request = new XdiBatchRequest()
{
XdiAppendFileRootBasePath = "test/test"
};
var results = await _xdiBatchItemService.BuildXdiFiles(testFile, request.XdiAppendFileRootBasePath, xdiBatchProcessInfo.FirstOrDefault());
Assert.AreEqual(1, results.Count);
Assert.True(results.Exists(x => x.UserId == "100" && x.Value == DeliveryPreference.Paper));
@@ -351,20 +386,20 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
[Test]
public async Task MarkPendingSuccessful_OK()
{
var payload = new List<FtpQueuePayloadItem>()
var batchFileExportList = new List<XdiBatchFileExport>()
{
new FtpQueuePayloadItem()
new XdiBatchFileExport()
{
UserId = "100",
Value = DeliveryPreference.Paper
},
new FtpQueuePayloadItem()
new XdiBatchFileExport()
{
UserId = "101",
Value = "[email protected]"
}
};
var payloadString = JsonConvert.SerializeObject(payload);
var payloadString = JsonConvert.SerializeObject(batchFileExportList);
var response = new LCU.Library.Internal.ApiResponse.Models.Response()
{
@@ -381,7 +416,7 @@ namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Services
_mockBatchItemsRepository.Setup(x => x.MarkPendingSuccessful(It.IsAny<List<string>>())).ReturnsAsync(true)
.Verifiable();
var result = await _xdiBatchItemService.MarkPendingSuccessful(response);
var result = await _xdiBatchItemService.MarkPendingSuccessful(batchFileExportList);
Assert.True(result);