using System; using LCU.API.Collections.RepoApi.Domain.AlertChecker; using LCU.API.Collections.RepoApi.Domain.Processing; using LCU.Shared.Collections.RepoApiLib.Models; using Xunit; namespace LCU.API.Collections.RepoApiTests.AlertCheckers { public class NoticeOfSurplusDeficiencyNotSentCheckerTest { private readonly NoticeOfSurplusDeficiencyNotSentChecker _checker; public NoticeOfSurplusDeficiencyNotSentCheckerTest() { _checker = new NoticeOfSurplusDeficiencyNotSentChecker(); } [Fact] public void Does_Not_Create_Alert_When_Refunds_Received_Date_Is_Null() { var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO" }, UpdatedRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO", RefundStatus = new RefundStatus { RepoId = 1, RefundsReceivedDate = null } } }; var result = _checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Does_Not_Create_Alert_When_Refunds_Received_Date_Two_Days_Ago_And_Account_Not_Closed() { var originalRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO", RefundStatus = new RefundStatus { RepoId = 1, RefundsReceivedDate = DateTime.Now.AddDays(-2).Date } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Creates_Alert_When_Refunds_Received_Date_Three_Days_Ago_And_Account_Not_Closed() { var originalRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO", RefundStatus = new RefundStatus { RepoId = 1, RefundsReceivedDate = DateTime.Now.AddDays(-3).Date } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.NotNull(result); } [Fact] public void Does_Not_Create_Alert_When_Refunds_Received_Date_Three_Days_Ago_And_Account_Not_Closed_And_Bankruptcy_Not_Null() { var originalRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO", Bankruptcy = "B7" }; var updatedRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO", Bankruptcy = "B7", RefundStatus = new RefundStatus { RepoId = 1, RefundsReceivedDate = DateTime.Now.AddDays(-3).Date } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Does_Not_Create_Alert_When_Refunds_Received_Date_Three_Days_Ago_And_Account_Is_Closed() { var originalRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 1, AccountNo = "123456-789", Status = "REPO", DateClosed = DateTime.Now.Date, RefundStatus = new RefundStatus { RepoId = 1, RefundsReceivedDate = DateTime.Now.AddDays(-3).Date } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.Null(result); } } }