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 StatusChangeCheckerTest { [Fact] public void Create_StatusIsUnchanged_Ok() { var checker = new StatusChangeChecker("RECA"); var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "RECA" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "RECA" }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Create_StatusIsReca_Ok() { var checker = new StatusChangeChecker("RECA"); var originalRepoAccount = new RepoAccount() { RepoId = 2, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 2, AccountNo = "123456-789", Status = "RECA" }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Status Changed to RECA", result[0].Message); Assert.Equal("Previously REPO. I confirm that I have updated the Status to RECA in RDN.", result[0].SubMessage); 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(2, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_StatusIsReho_Ok() { var checker = new StatusChangeChecker("REHO"); var originalRepoAccount = new RepoAccount() { RepoId = 2, AccountNo = "123456-789", Status = "REPO" }; var updatedRepoAccount = new RepoAccount() { RepoId = 2, AccountNo = "123456-789", Status = "REHO" }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Status Changed to REHO", result[0].Message); Assert.Equal("Previously REPO. I confirm that I have updated the Status to REHO in RDN.", result[0].SubMessage); 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(2, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_StatusFromO4rToBlank_Ok() { var DefaultNoStatusIntellec = "NO STATUS INTELLEC"; var checker = new StatusChangeChecker(DefaultNoStatusIntellec, new List() { "O4R", "REPO" }); var originalRepoAccount = new RepoAccount() { RepoId = 2, AccountNo = "123456-789", Status = "O4R" }; var updatedRepoAccount = new RepoAccount() { RepoId = 2, AccountNo = "123456-789", Status = DefaultNoStatusIntellec }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Status Changed to " + DefaultNoStatusIntellec, result[0].Message); Assert.Equal("Previously O4R. I confirm that I have updated the Status to NO STATUS INTELLEC in RDN.", result[0].SubMessage); 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(2, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } } }