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

224 lines
8.3 KiB
C#

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();
}
}
}