Files
monorepo/LCU.API.Internal.MemberPreferencesApi/LCU.API.Internal.MemberPreferencesApi.UnitTests/Services/DNADataAuditProcessServiceTest.cs
T
2026-03-31 16:43:12 -05:00

131 lines
5.5 KiB
C#

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<IDnaAuditProcessRepository> _dnaAuditProcessRepositoryMock;
private DNADataAuditProcessService _service;
private Mock<IDateTime> _dateTimeMock;
private DnaAuditProcessConfiguration _config;
[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>();
_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);
}
}
}