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 TimeInStatusCheckerTest { [Fact] public void Create_TooFewDays_Ok() { var checker = new TimeInStatusChecker("REHO", 30, 30); var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REHO" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REHO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REHO", ChangedDate = DateTime.Now.AddDays(-29) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Create_30DaysInReho_Ok() { var checker = new TimeInStatusChecker("REHO", 30, 30); var originalRepoAccount = new RepoAccount() { RepoId = 9, AccountNo = "123456-789", Status = "REHO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 9, AccountNo = "123456-789", Status = "REHO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REHO", ChangedDate = DateTime.Now.AddDays(-30) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("30 days in REHO", 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(9, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_30DaysInRehoRepeat_Ok() { var checker = new TimeInStatusChecker("REHO", 30, 30); var originalRepoAccount = new RepoAccount() { RepoId = 9, AccountNo = "123456-789", Status = "REHO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 9, AccountNo = "123456-789", Status = "REHO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REHO", ChangedDate = DateTime.Now.AddDays(-60) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("60 days in REHO", 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(9, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_45DaysInRehoNull_Ok() { var checker = new TimeInStatusChecker("REHO", 30, 30); var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REHO" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "REHO", RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "REHO", ChangedDate = DateTime.Now.AddDays(-45) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.Null(result); } } }