517 lines
18 KiB
C#
517 lines
18 KiB
C#
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 Moq;
|
|
using Xunit;
|
|
|
|
namespace LCU.API.Collections.RepoApiTests.AlertCheckers
|
|
{
|
|
public class O4rNoRepoCheckerTest
|
|
{
|
|
[Fact]
|
|
public void Create_TooFewDays_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.Voluntary);
|
|
var originalRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "O4R"
|
|
};
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Voluntary
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-1)
|
|
}
|
|
}
|
|
};
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_Voluntary_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.Voluntary);
|
|
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<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Voluntary,
|
|
RepoCompanyId = 10,
|
|
RepoCompanyAssignmentDate = DateTime.Today
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-2)
|
|
}
|
|
}
|
|
};
|
|
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal("O4R No Repo", 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);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_VoluntaryRepeat_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.Voluntary);
|
|
var originalRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R"
|
|
};
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Voluntary,
|
|
RepoCompanyAssignmentDate = DateTime.Today,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-3)
|
|
}
|
|
}
|
|
};
|
|
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal("O4R No Repo", 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(7, result[0].RepoId);
|
|
Assert.Null(result[0].MarkedReadBy);
|
|
Assert.Null(result[0].DateMarkedRead);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_Involuntary_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.Involuntary);
|
|
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<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Involuntary,
|
|
RepoCompanyAssignmentDate = DateTime.Today,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-60)
|
|
}
|
|
}
|
|
};
|
|
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal("O4R No Repo", 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_InvoluntaryRepeat_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.Involuntary);
|
|
var originalRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R"
|
|
};
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Involuntary,
|
|
RepoCompanyAssignmentDate = DateTime.Today,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-90)
|
|
}
|
|
}
|
|
};
|
|
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal("O4R No Repo", 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(7, result[0].RepoId);
|
|
Assert.Null(result[0].MarkedReadBy);
|
|
Assert.Null(result[0].DateMarkedRead);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_Preskip_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.PreSkip);
|
|
var originalRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R"
|
|
};
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.PreSkip,
|
|
RepoCompanyAssignmentDate = DateTime.Today,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-31)
|
|
}
|
|
}
|
|
};
|
|
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal("O4R No Repo", 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(7, result[0].RepoId);
|
|
Assert.Null(result[0].MarkedReadBy);
|
|
Assert.Null(result[0].DateMarkedRead);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_No_Repo_Ok()
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.PreSkip);
|
|
var originalRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R"
|
|
};
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Unknown,
|
|
RepoCompanyAssignmentDate = null,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
RepoStatusChanges = new List<RepoStatusChange>()
|
|
{
|
|
new RepoStatusChange()
|
|
{
|
|
StatusFrom = "None",
|
|
StatusTo = "O4R",
|
|
ChangedDate = DateTime.Now.AddDays(-31)
|
|
}
|
|
}
|
|
};
|
|
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
ExistingRepoAccount = originalRepoAccount,
|
|
UpdatedRepoAccount = updatedRepoAccount
|
|
};
|
|
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(15, 10, 5, true)]
|
|
[InlineData(20, 10, 10, true)]
|
|
[InlineData(16, 10, 5, false)]
|
|
[InlineData(8, 10, 5, false)]
|
|
[InlineData(10, 10, 5, false)]
|
|
public void ShouldSendRepeatedAlert_OK(int daysInStatus, int dayCount, int repeatCount, bool expected)
|
|
{
|
|
var checker = new O4rNoRepoChecker(RepoType.PreSkip);
|
|
|
|
Assert.Equal(expected, checker.ShouldSendRepeatedAlert(daysInStatus, dayCount, repeatCount));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsRepoAssigned_True_OK()
|
|
{
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.PreSkip,
|
|
RepoCompanyAssignmentDate = DateTime.Now,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
var checker = new O4rNoRepoChecker(RepoType.PreSkip);
|
|
|
|
Assert.True(checker.IsRepoAssigned(updatedRepoAccount));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsRepoAssigned_No_Date_OK()
|
|
{
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.PreSkip,
|
|
RepoCompanyAssignmentDate = null,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
var checker = new O4rNoRepoChecker(RepoType.PreSkip);
|
|
|
|
Assert.False(checker.IsRepoAssigned(updatedRepoAccount));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsRepoAssigned_No_Type_OK()
|
|
{
|
|
var updatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 7,
|
|
AccountNo = "123456-789",
|
|
Status = "O4R",
|
|
Collaterals = new List<Collateral>()
|
|
{
|
|
new Collateral
|
|
{
|
|
RepoCompanySelections = new List<RepoCompanySelection>()
|
|
{
|
|
new RepoCompanySelection()
|
|
{
|
|
RepoType = RepoType.Unknown,
|
|
RepoCompanyAssignmentDate = DateTime.Now,
|
|
RepoCompanyId = 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
var checker = new O4rNoRepoChecker(RepoType.PreSkip);
|
|
|
|
Assert.False(checker.IsRepoAssigned(updatedRepoAccount));
|
|
}
|
|
}
|
|
} |