Files
monorepo/LCU.API.Collections.RepoApi-old/LCU.API.Collections.RepoApiTests/AlertCheckers/DocumentNotFoundCheckerTest.cs
T
2026-04-20 14:47:24 -05:00

436 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using LCU.API.Collections.RepoApi.Domain.AlertChecker;
using LCU.API.Collections.RepoApi.Domain.Processing;
using LCU.Shared.Collections.RepoApiLib.Models;
using LCU.Shared.Collections.RepoApiLib.Models.Consumer;
using Moq;
using Xunit;
namespace LCU.API.Collections.RepoApiTests.AlertCheckers
{
public class DocumentNotFoundCheckerTest
{
public DocumentNotFoundCheckerTest()
{
}
private MemberDetail MakeMemberWithAddressInState(string state)
{
return new MemberDetail
{
Address = new AddressDetail
{
State = state
}
};
}
[Fact]
public void Create_NoticeOfSaleBankruptcy_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
Bankruptcy = "B13",
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfSaleWiFound_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>
{
new RepoLetter
{
ActionCode = "LTR35",
NoticeType = "WI Repo-Notice of Plan to Sell"
}
},
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
},
UpdatedRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
}
};
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfSaleIlFound_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>
{
new RepoLetter
{
ActionCode = "701",
NoticeType = "Right to Reinstate/Redeem-Illinois"
}
},
Member = MakeMemberWithAddressInState("IL"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
},
UpdatedRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
}
};
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfSaleWrongStatus_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
},
UpdatedRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
}
};
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfSaleNotFound_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
RepoId = 5,
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
RepoId = 5,
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("Notice of Plan to Sell", "LTR35", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.NotNull(result);
Assert.Equal("Notice of Plan to Sell Not Found", result[0].Message);
Assert.Equal("123456-789", result[0].AccountNo);
Assert.Equal("Batch", result[0].CreatedBy);
Assert.InRange(result[0].DateAdded, DateTime.Now.AddSeconds(-1), DateTime.Now.AddSeconds(1));
Assert.Equal(5, result[0].RepoId);
Assert.Null(result[0].MarkedReadBy);
Assert.Null(result[0].DateMarkedRead);
}
[Fact]
public void Create_NoticeOfRepossessionBankruptcy_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
Bankruptcy = "B13",
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfRepossessionWiFound_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>
{
new RepoLetter
{
ActionCode = "LTR34",
NoticeType = "Repo-WI Notice of Repossession"
}
},
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfRepossessionIlFound_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>
{
new RepoLetter
{
ActionCode = "701",
NoticeType = "Right to Reinstate/Redeem-Illinois"
}
},
Member = MakeMemberWithAddressInState("IL"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfRepossessionWrongStatus_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
},
UpdatedRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "RECA"
}
};
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.Null(result);
}
[Fact]
public void Create_NoticeOfRepossessionNotFound_Ok()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
RepoId = 5,
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
RepoId = 5,
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
var result = checker.CheckForAlert(slip);
Assert.NotNull(result[0]);
Assert.Equal("Notice of Repossession Not Found", result[0].Message);
Assert.Equal("123456-789", result[0].AccountNo);
Assert.Equal("Batch", result[0].CreatedBy);
Assert.InRange(result[0].DateAdded, DateTime.Now.AddSeconds(-1), DateTime.Now.AddSeconds(1));
Assert.Equal(5, result[0].RepoId);
Assert.Null(result[0].MarkedReadBy);
Assert.Null(result[0].DateMarkedRead);
}
[Fact]
public void Null_Letters_Dont_Throw_Exception()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = null,
Member = MakeMemberWithAddressInState("WI"),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
Bankruptcy = "B13",
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("RTC Letter", "RTC 3");
List<EventAlert> result = null;
try
{
result = checker.CheckForAlert(slip);
}
catch (Exception)
{
Assert.True(false, "Null letters should not have thrown an exception.");
}
Assert.Null(result);
}
[Fact]
public void Null_Member_Does_Not_Throw_Exception()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = null,
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
Bankruptcy = "B13",
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("RTC Letter", "RTC 3");
List<EventAlert> result = null;
try
{
result = checker.CheckForAlert(slip);
}
catch (Exception)
{
Assert.True(false, "A null member should not have thrown an exception.");
}
Assert.Null(result);
}
[Fact]
public void Null_Member_Address_Does_Not_Throw_Exception()
{
var slip = new RepoAccountProcessingSlip()
{
Letters = new List<RepoLetter>(),
Member = MakeMemberWithAddressInState(null),
ExistingRepoAccount = new RepoAccount()
{
AccountNo = "123456-789",
Status = "REPO"
},
UpdatedRepoAccount = new RepoAccount()
{
Bankruptcy = "B13",
AccountNo = "123456-789",
Status = "REPO"
}
};
var checker = new DocumentNotFoundChecker("RTC Letter", "RTC 3");
List<EventAlert> result = null;
try
{
result = checker.CheckForAlert(slip);
}
catch (Exception)
{
Assert.True(false, "A null member address should not have thrown an exception.");
}
Assert.Null(result);
}
}
}