Files
monorepo/LCU.Api.Internal.DataCleanUp/LCU.Api.Internal.DataCleanUpTest/Services/Validation/NcoaValidationServiceTest.cs
T
2026-03-13 09:28:55 -05:00

348 lines
9.0 KiB
C#

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<PersonPostalAddress>();
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<PersonPostalAddress>();
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<string>()
{
"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<string>()
{
"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);
}
}