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 Xunit; namespace LCU.API.Collections.RepoApiTests.AlertCheckers { public class RepoNotSoldCheckerTest { private readonly RepoNotSoldChecker _checker; public RepoNotSoldCheckerTest() { _checker = new RepoNotSoldChecker(60, 30); } [Fact] public void Create_TooFewDays_Ok() { var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REPO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REPO", ChangedDate = DateTime.Now.AddDays(-59) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Create_RepoNotSold_Ok() { var originalRepoAccount = new RepoAccount() { RepoId = 3, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 3, AccountNo = "123456-789", Status = "REPO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REPO", ChangedDate = DateTime.Now.AddDays(-60) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Repo Not Sold", 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(3, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_RepoNotSoldRepeat_Ok() { var originalRepoAccount = new RepoAccount() { RepoId = 6, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 6, AccountNo = "123456-789", Status = "REPO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REPO", ChangedDate = DateTime.Now.AddDays(-90) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Repo Not Sold", 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(6, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_61DaysInRepoNull_Ok() { var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REPO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REPO", ChangedDate = DateTime.Now.AddDays(-61) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = _checker.CheckForAlert(slip); Assert.Null(result); } } }