using System; using System.Collections.Generic; using LCU.API.Collections.CollectionsApiLib.Models; 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 SkipNotPaidCheckerTest { [Fact] public void Create_TooFewDays_Ok() { var checker = new SkipNotPaidChecker(106, 15); var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "O4R" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "O4R", Collaterals = new List() { new Collateral { RepoCompanySelections = new List() { new RepoCompanySelection() { RepoType = RepoType.Skip } } } }, RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "O4R", ChangedDate = DateTime.Now.AddDays(-105) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Create_PaidSkip_Ok() { var checker = new SkipNotPaidChecker(106, 15); var originalRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "O4R" }; var updatedRepoAccount = new RepoAccount() { AccountNo = "123456-789", Status = "O4R", SubStatus = "PSKP", Collaterals = new List() { new Collateral { RepoCompanySelections = new List() { new RepoCompanySelection() { RepoType = RepoType.Skip } } } }, RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "O4R", ChangedDate = DateTime.Now.AddDays(-106) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.Null(result); } [Fact] public void Create_SkipNotPaid_Ok() { var checker = new SkipNotPaidChecker(106); var originalRepoAccount = new RepoAccount() { RepoId = 4, AccountNo = "123456-789", Status = "O4R" }; var updatedRepoAccount = new RepoAccount() { RepoId = 4, AccountNo = "123456-789", Status = "O4R", Collaterals = new List() { new Collateral { RepoCompanySelections = new List() { new RepoCompanySelection() { RepoType = RepoType.Skip } } } }, RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "O4R", ChangedDate = DateTime.Now.AddDays(-106) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Skip Not Paid", 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(4, result[0].RepoId); Assert.Null(result[0].MarkedReadBy); Assert.Null(result[0].DateMarkedRead); } [Fact] public void Create_SkipNotPaidRepeating_Ok() { var checker = new SkipNotPaidChecker(106, 15); var originalRepoAccount = new RepoAccount() { RepoId = 5, AccountNo = "123456-789", Status = "O4R" }; var updatedRepoAccount = new RepoAccount() { RepoId = 5, AccountNo = "123456-789", Status = "O4R", Collaterals = new List() { new Collateral { RepoCompanySelections = new List() { new RepoCompanySelection() { RepoType = RepoType.Skip } } } }, RepoStatusChanges = new List() { new RepoStatusChange() { StatusFrom = "None", StatusTo = "O4R", ChangedDate = DateTime.Now.AddDays(-121) } } }; var slip = new RepoAccountProcessingSlip() { ExistingRepoAccount = originalRepoAccount, UpdatedRepoAccount = updatedRepoAccount }; var result = checker.CheckForAlert(slip); Assert.NotNull(result); Assert.Equal("Skip Not Paid", 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); } } }