348 lines
9.0 KiB
C#
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);
|
|
}
|
|
}
|