using LCU.Api.Internal.DataCleanUp.Models.ParserModels; using LCU.Api.Internal.DataCleanUp.Services.Validation; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Agreements; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.PostalAddresses; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LCU.Api.Internal.DataCleanUpTest.Services.Validation; public class NcoaValidationServiceTest { private readonly NcoaValidationService _ncoaValidationService; public NcoaValidationServiceTest() { _ncoaValidationService = new NcoaValidationService(); } [Test] public async Task IsBusinessRecord_True() { // Arrange var ncoaRecord = new NcoaRecord() { UserId = "123456", NcoaType = "I", ChangeDate = "202212", PrimaryName = "Test E Testerson", CurrentAddressOne = "1 Imaginary Lane", CurrentAddressTwo = "Apt 13", CurrentAddressThree = "Additional Address Line", CurrentAddressFour = "ReallyLongCityName", CurrentAddressFive = "Wisconsin, 53186", SecondaryName = "Test Testerson", BusinessName = "Testerson's Testing", NewAddressLine = "New Address Line PO BOX Test", City = "New Test City", StateCode = "WI", ZipCode = "53022", ZipSuffix = "1234", UserIdTwo = "123456", StatementCode = "TestStatementCode", }; // Act var result = _ncoaValidationService.IsBusinessRecord(ncoaRecord); // Assert Assert.True(result); } [Test] public async Task IsBusinessRecord_False_Null() { // Arrange var ncoaRecord = new NcoaRecord() { UserId = "123456", NcoaType = "I", ChangeDate = "202212", PrimaryName = "Test E Testerson", CurrentAddressOne = "1 Imaginary Lane", CurrentAddressTwo = "Apt 13", CurrentAddressThree = "Additional Address Line", CurrentAddressFour = "ReallyLongCityName", CurrentAddressFive = "Wisconsin, 53186", SecondaryName = "Test Testerson", BusinessName = null, NewAddressLine = "New Address Line PO BOX Test", City = "New Test City", StateCode = "WI", ZipCode = "53022", ZipSuffix = "1234", UserIdTwo = "123456", StatementCode = "TestStatementCode", }; // Act var result = _ncoaValidationService.IsBusinessRecord(ncoaRecord); // Assert Assert.False(result); } [Test] public async Task IsBusinessRecord_False_Empty() { // Arrange var ncoaRecord = new NcoaRecord() { UserId = "123456", NcoaType = "I", ChangeDate = "202212", PrimaryName = "Test E Testerson", CurrentAddressOne = "1 Imaginary Lane", CurrentAddressTwo = "Apt 13", CurrentAddressThree = "Additional Address Line", CurrentAddressFour = "ReallyLongCityName", CurrentAddressFive = "Wisconsin, 53186", SecondaryName = "Test Testerson", BusinessName = "", NewAddressLine = "New Address Line PO BOX Test", City = "New Test City", StateCode = "WI", ZipCode = "53022", ZipSuffix = "1234", UserIdTwo = "123456", StatementCode = "TestStatementCode", }; // Act var result = _ncoaValidationService.IsBusinessRecord(ncoaRecord); // Assert Assert.False(result); } [Test] public async Task ParsePersonNumber_Ok() { // Arrange var agreement = new Agreement() { PersonNumber = 111 }; // Act var result = _ncoaValidationService.ParsePersonNumber(agreement); // Assert Assert.AreEqual(111, result); } [Test] public async Task ParsePersonNumber_FailParse() { // Arrange var agreement = new Agreement() { PersonNumber = 11111111111 }; // Act var result = _ncoaValidationService.ParsePersonNumber(agreement); // Assert Assert.AreEqual(-1, result); } [Test] public async Task ParsePersonNumber_NullAgreement() { // Arrange/Act var result = _ncoaValidationService.ParsePersonNumber(null); // Assert Assert.AreEqual(-1, result); } [Test] public async Task IsAddrUseCodeFound_Ok() { // Arrange var addressList = new List(); var address = new PersonPostalAddress() { AddressUseCode = "PRI", AddressNumber = 111 }; addressList.Add(address); addressList.AsReadOnly(); // Act var result = _ncoaValidationService.IsAddrUseCodeFound(addressList, "PRI"); // Assert Assert.AreEqual(111, result.AddressNumber); } [Test] public async Task IsAddrUseCodeFound_Null() { // Arrange var addressList = new List(); var address = new PersonPostalAddress() { AddressUseCode = "ALT", AddressNumber = 111 }; addressList.Add(address); addressList.AsReadOnly(); // Act var result = _ncoaValidationService.IsAddrUseCodeFound(addressList, "PRI"); // Assert Assert.Null(result); } [Test] public async Task IsAddrLineTooLong_Ok() { // Arrange string addrLine = "Short Address"; // Act var result = _ncoaValidationService.IsAddrLineTooLong(addrLine); // Assert Assert.False(result); } [Test] public async Task IsAddrLineTooLong_TooLong() { // Arrange string addrLine = "This is a long addrLine that should be more than 40 characters and should fail validation"; // Act var result = _ncoaValidationService.IsAddrLineTooLong(addrLine); // Assert Assert.True(result); } [Test] public async Task AgreementHasOrgNumber_Ok() { // Arrange var agreement = new Agreement() { PersonNumber = 11111111111 }; // Act var result = _ncoaValidationService.AgreementHasOrgNumber(agreement); // Assert Assert.False(result); } [Test] public async Task AgreementHasOrgNumber_HasOrgNumber() { // Arrange var agreement = new Agreement() { PersonNumber = 11111111111, ByOrgNbr = 123456 }; // Act var result = _ncoaValidationService.AgreementHasOrgNumber(agreement); // Assert Assert.True(result); } [Test] public async Task IsOnExlusionList_OnExclusionList() { // Arrange var exclusionList = new List() { "12345", "6789", "2468" }; // Act var result = _ncoaValidationService.IsOnExclusionList(2468, exclusionList); // Assert Assert.True(result); } [Test] public async Task IsOnExlusionList_NotOnExclusionList() { // Arrange var exclusionList = new List() { "12345", "6789", "2468" }; // Act var result = _ncoaValidationService.IsOnExclusionList(13579, exclusionList); // Assert Assert.False(result); } [Test] public async Task IsAddressUpdatedRecently_UpdatedRecently() { // Arrange var personPostalAddress = new PersonPostalAddress() { LastMaintained = DateTime.Now.AddDays(-10) }; // Act var result = _ncoaValidationService.IsAddressUpdatedRecently(personPostalAddress, -25, DateTime.Now.ToString()); // Assert Assert.True(result); } [Test] public async Task IsAddressUpdatedRecently_UpdatedRecently_SameAsExclusionDays() { // Arrange var time = DateTime.Now; var personPostalAddress = new PersonPostalAddress() { LastMaintained = time.AddDays(-25) }; // Act var result = _ncoaValidationService.IsAddressUpdatedRecently(personPostalAddress, -25, time.ToString()); // Assert Assert.True(result); } [Test] public async Task IsAddressUpdatedRecently_NotUpdatedRecently() { // Arrange var personPostalAddress = new PersonPostalAddress() { LastMaintained = DateTime.Now.AddDays(-25) }; // Act var result = _ncoaValidationService.IsAddressUpdatedRecently(personPostalAddress, -10, DateTime.Now.ToString()); // Assert Assert.False(result); } }