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 _coreApiWrapperServiceMock; private Mock _queueAccountMock; private Mock _queueAgreementMock; private Mock _queueOrganizationMock; private Mock _dnaAuditProcessRepositoryMock; private DNADataAuditProcessService _service; private Mock _dateTimeMock; private DnaAuditProcessConfiguration _config; [SetUp] public void Setup() { _dateTimeMock = new Mock(); _config = new DnaAuditProcessConfiguration(); _coreApiWrapperServiceMock = new Mock(); _queueAccountMock = new Mock(); _queueAgreementMock = new Mock(); _queueOrganizationMock = new Mock(); _dnaAuditProcessRepositoryMock = new Mock(); _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 { new DnaAuditProcess() { ConsecutiveFailures = 0, DnaProcessType = DnaAuditProcessType.DNAAccounts, LastUpdated = DateTime.Now, ProcessId = 0, } }; var processlistAgreement = new List { new DnaAuditProcess() { ConsecutiveFailures = 0, DnaProcessType = DnaAuditProcessType.DNAAgreement, LastUpdated = DateTime.Now, ProcessId = 0, } }; var processlistOrg = new List { 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 { 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); } } }