338 lines
12 KiB
C#
338 lines
12 KiB
C#
using Moq;
|
|
using NUnit.Framework;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using LCU.Api.Internal.DataCleanUp.Configuration;
|
|
using LCU.Api.Internal.DataCleanUp.Models;
|
|
using LCU.Api.Internal.DataCleanUp.Services;
|
|
using LCU.Api.Internal.DataCleanUp.Services.Emailers;
|
|
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Accounts;
|
|
using LCU.Library.Internal.DataCleanUpModel.Models;
|
|
|
|
namespace LCU.Api.Internal.DataCleanUpTest.Services;
|
|
|
|
public class UpdateFannieMaeMortgageServiceTest
|
|
{
|
|
private UpdateFannieMaeMortgageService _updateFannieMaeMortgageService;
|
|
private Mock<ICoreApiWrapperService> _mockCoreApiWrapperService;
|
|
private Mock<IFileOperationsService> _mockFileOperationsService;
|
|
private FannieMaeConfiguration _fannieMaeConfiguration;
|
|
private DataCleanUpConfiguration _dataCleanUpConfiguration;
|
|
private Mock<INotificationsApiService> _mockEmailService;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
_dataCleanUpConfiguration = new DataCleanUpConfiguration()
|
|
{
|
|
TimeZone = "America/Chicago"
|
|
};
|
|
|
|
_fannieMaeConfiguration = new FannieMaeConfiguration()
|
|
{
|
|
ErrorFileDefaultName = "FannieMaeErrorRecord",
|
|
SummaryEmailSubject = "FannieMaeSummaryEmail",
|
|
PoolDateUserFieldId = "PLDT",
|
|
PoolNbrUserFieldId = "PLNB",
|
|
FileDateFormat = "M/d/yyyy",
|
|
DnaDateFormat = "yyyy-MM-dd"
|
|
};
|
|
|
|
_mockCoreApiWrapperService = new Mock<ICoreApiWrapperService>();
|
|
_mockFileOperationsService = new Mock<IFileOperationsService>();
|
|
_mockEmailService = new Mock<INotificationsApiService>();
|
|
_updateFannieMaeMortgageService = new UpdateFannieMaeMortgageService(_mockCoreApiWrapperService.Object,
|
|
_mockFileOperationsService.Object,
|
|
_fannieMaeConfiguration,
|
|
_dataCleanUpConfiguration,
|
|
_mockEmailService.Object);
|
|
}
|
|
|
|
[Test]
|
|
public async Task ProcessFannieMaeRecordPoolDate_Ok()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResult = new FannieMaeUpdateResult(request.Filename);
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
var fannieMaeMortgage1 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 1,
|
|
ServicerLoanNumber = 99998888888800000,
|
|
PoolIssueDate = "6/1/2023"
|
|
};
|
|
|
|
fannieMaeList.Add(fannieMaeMortgage1);
|
|
updateResult.UpdateList = fannieMaeList;
|
|
|
|
var accountUserValuesList = new List<AccountUserField>()
|
|
{
|
|
new AccountUserField()
|
|
{
|
|
AccountNumber = 99998888888800000,
|
|
Value = "6/1/2023",
|
|
UserFieldCode = _fannieMaeConfiguration.PoolDateUserFieldId
|
|
}
|
|
};
|
|
|
|
_mockCoreApiWrapperService.Setup(x => x.AddAccountUserField(It.IsAny<long>(), It.IsAny<string>(), It.IsAny<string>()))
|
|
.ReturnsAsync(accountUserValuesList).Verifiable();
|
|
|
|
var result = await _updateFannieMaeMortgageService.ProcessFannieMaeRecord(fannieMaeMortgage1, updateResult, _fannieMaeConfiguration.PoolDateUserFieldId, fannieMaeMortgage1.PoolIssueDate);
|
|
|
|
Assert.AreEqual(0, result.ErrorList.Count());
|
|
Assert.AreEqual(2, result.UpdateList.Count());
|
|
Assert.AreEqual(fannieMaeMortgage1.ServicerLoanNumber, accountUserValuesList[0].AccountNumber);
|
|
}
|
|
|
|
[Test]
|
|
public void ProcessFannieMaeRecordForPoolDate_Error()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResult = new FannieMaeUpdateResult(request.Filename);
|
|
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
var fannieMaeMortgage1 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 1,
|
|
ServicerLoanNumber = 99998877778800000,
|
|
PoolIssueDate = "6/1/2023"
|
|
};
|
|
|
|
fannieMaeList.Add(fannieMaeMortgage1);
|
|
updateResult.UpdateList = fannieMaeList;
|
|
|
|
var result = _updateFannieMaeMortgageService.ProcessFannieMaeRecord(fannieMaeMortgage1, updateResult, _fannieMaeConfiguration.PoolDateUserFieldId, fannieMaeMortgage1.PoolIssueDate);
|
|
|
|
Assert.AreEqual(1, result.Result.ErrorList.Count());
|
|
Assert.AreEqual("Fannie Mae Loan Record Failed: 99998877778800000", result.Result.ErrorList[0]);
|
|
}
|
|
|
|
[Test]
|
|
public async Task ProcessFannieMaeRecordPoolNumber_Ok()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResult = new FannieMaeUpdateResult(request.Filename);
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
var fannieMaeMortgage1 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 1,
|
|
ServicerLoanNumber = 99998888888800000,
|
|
PoolNumber = "TEST1234"
|
|
};
|
|
|
|
fannieMaeList.Add(fannieMaeMortgage1);
|
|
updateResult.UpdateList = fannieMaeList;
|
|
|
|
var accountUserValuesList = new List<AccountUserField>()
|
|
{
|
|
new AccountUserField()
|
|
{
|
|
AccountNumber = 99998888888800000,
|
|
Value = "TEST1234",
|
|
UserFieldCode = _fannieMaeConfiguration.PoolNbrUserFieldId
|
|
}
|
|
};
|
|
|
|
_mockCoreApiWrapperService.Setup(x => x.AddAccountUserField(It.IsAny<long>(), It.IsAny<string>(), It.IsAny<string>()))
|
|
.ReturnsAsync(accountUserValuesList).Verifiable();
|
|
|
|
var result = await _updateFannieMaeMortgageService.ProcessFannieMaeRecord(fannieMaeMortgage1, updateResult, _fannieMaeConfiguration.PoolNbrUserFieldId, fannieMaeMortgage1.PoolNumber);
|
|
|
|
Assert.AreEqual(0, result.ErrorList.Count());
|
|
Assert.AreEqual(2, result.UpdateList.Count());
|
|
Assert.AreEqual(fannieMaeMortgage1.ServicerLoanNumber, accountUserValuesList[0].AccountNumber);
|
|
}
|
|
|
|
[Test]
|
|
public void ProcessFannieMaeRecordForPoolNumber_Error()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResult = new FannieMaeUpdateResult(request.Filename);
|
|
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
var fannieMaeMortgage1 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 1288,
|
|
ServicerLoanNumber = 99998566800000,
|
|
PoolNumber = "TEST1234"
|
|
};
|
|
|
|
fannieMaeList.Add(fannieMaeMortgage1);
|
|
updateResult.UpdateList = fannieMaeList;
|
|
|
|
var result = _updateFannieMaeMortgageService.ProcessFannieMaeRecord(fannieMaeMortgage1, updateResult, _fannieMaeConfiguration.PoolNbrUserFieldId, fannieMaeMortgage1.PoolNumber);
|
|
|
|
Assert.AreEqual(1, result.Result.ErrorList.Count());
|
|
Assert.AreEqual("Fannie Mae Loan Record Failed: 99998566800000", result.Result.ErrorList[0]);
|
|
}
|
|
|
|
[Test]
|
|
public void BuildTotalBatchSummary_Ok_UpdatesErrors()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResults = new List<FannieMaeUpdateResult>();
|
|
var resultOne = new FannieMaeUpdateResult(request.Filename);
|
|
var errorListOne = new List<string>()
|
|
{
|
|
"errorOne",
|
|
"errorTwo",
|
|
"errorThree"
|
|
};
|
|
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
var fannieMaeMortgage1 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 1,
|
|
PoolIssueDate = "6/1/2023",
|
|
PoolNumber = "XXXZ23443"
|
|
};
|
|
var fannieMaeMortgage2 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 2,
|
|
PoolIssueDate = "6/1/2023",
|
|
PoolNumber = "DDDZ23443"
|
|
};
|
|
|
|
fannieMaeList.Add(fannieMaeMortgage1);
|
|
fannieMaeList.Add(fannieMaeMortgage2);
|
|
|
|
resultOne.ErrorList = errorListOne;
|
|
resultOne.UpdateList = fannieMaeList;
|
|
resultOne.TotalRecordsFound = 5;
|
|
|
|
updateResults.Add(resultOne);
|
|
|
|
var result = _updateFannieMaeMortgageService.BuildTotalBatchSummary(updateResults, true);
|
|
|
|
Assert.AreEqual(5, result.TotalRecordsFound);
|
|
Assert.AreEqual(3, result.TotalErrorRecords);
|
|
Assert.AreEqual(true, result.ErrorFileCreated);
|
|
Assert.AreEqual(2, result.TotalRecordsUpdated);
|
|
}
|
|
|
|
[Test]
|
|
public void BuildTotalBatchSummary_Ok_UpdatesNoErrors()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResults = new List<FannieMaeUpdateResult>();
|
|
var resultOne = new FannieMaeUpdateResult(request.Filename);
|
|
var errorListOne = new List<string>()
|
|
{
|
|
|
|
};
|
|
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
var fannieMaeMortgage1 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 1,
|
|
PoolIssueDate = "6/1/2023",
|
|
PoolNumber = "XXXZ23443"
|
|
};
|
|
var fannieMaeMortgage2 = new FannieMaeMortgage()
|
|
{
|
|
FannieMaeLoanNumber = 2,
|
|
PoolIssueDate = "6/1/2023",
|
|
PoolNumber = "DDDZ23443"
|
|
};
|
|
|
|
fannieMaeList.Add(fannieMaeMortgage1);
|
|
fannieMaeList.Add(fannieMaeMortgage2);
|
|
|
|
resultOne.ErrorList = errorListOne;
|
|
resultOne.UpdateList = fannieMaeList;
|
|
resultOne.TotalRecordsFound = 2;
|
|
|
|
updateResults.Add(resultOne);
|
|
|
|
var result = _updateFannieMaeMortgageService.BuildTotalBatchSummary(updateResults, false);
|
|
|
|
Assert.AreEqual(2, result.TotalRecordsFound);
|
|
Assert.AreEqual(0, result.TotalErrorRecords);
|
|
Assert.AreEqual(false, result.ErrorFileCreated);
|
|
Assert.AreEqual(2, result.TotalRecordsUpdated);
|
|
}
|
|
|
|
[Test]
|
|
public void BuildTotalBatchSummary_Ok_NoUpdatesNoErrors()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResults = new List<FannieMaeUpdateResult>();
|
|
var resultOne = new FannieMaeUpdateResult(request.Filename);
|
|
var errorListOne = new List<string>()
|
|
{
|
|
|
|
};
|
|
|
|
var fannieMaeList = new List<FannieMaeMortgage>();
|
|
|
|
resultOne.ErrorList = errorListOne;
|
|
resultOne.UpdateList = fannieMaeList;
|
|
resultOne.TotalRecordsFound = 0;
|
|
|
|
updateResults.Add(resultOne);
|
|
|
|
var result = _updateFannieMaeMortgageService.BuildTotalBatchSummary(updateResults, false);
|
|
|
|
Assert.AreEqual(0, result.TotalRecordsFound);
|
|
Assert.AreEqual(0, result.TotalErrorRecords);
|
|
Assert.AreEqual(false, result.ErrorFileCreated);
|
|
Assert.AreEqual(0, result.TotalRecordsUpdated);
|
|
}
|
|
|
|
[Test]
|
|
public void AddStringToErrorList_Ok()
|
|
{
|
|
var request = new FannieMaeMortgageRequest()
|
|
{
|
|
Filename = "TestFile"
|
|
};
|
|
|
|
var updateResult = new FannieMaeUpdateResult(request.Filename);
|
|
updateResult.ErrorList = new List<string>();
|
|
|
|
var fannieMaeRecord = new FannieMaeMortgage()
|
|
{
|
|
ServicerLoanNumber = 1,
|
|
PoolIssueDate = "6/1/2023",
|
|
PoolNumber = "TEST1234"
|
|
};
|
|
|
|
var expectedError = "1|TEST1234|6/1/2023|Unit test error message\n";
|
|
updateResult.AddStringToErrorList(fannieMaeRecord, "Unit test error message");
|
|
|
|
Assert.AreEqual(1, updateResult.ErrorList.Count);
|
|
Assert.AreEqual(expectedError, updateResult.ErrorList.FirstOrDefault());
|
|
}
|
|
}
|
|
|
|
|