using System; using System.Collections.Generic; using System.Linq; using LCU.API.Collections.RepoApi.Services.Reporting; using LCU.Shared.Collections.RepoApiLib.Models.Reporting; using LCU.Shared.Collections.RepoApiLib.Repositories; using Moq; using Xunit; namespace LCU.API.Collections.RepoApiTests.Services { public class RepoCompanyReportingServiceTest { private IRepoCompanyReportingService _repoCompanyReportingService; private Mock _mockReportingRepository; public RepoCompanyReportingServiceTest() { _mockReportingRepository = new Mock(); _repoCompanyReportingService = new RepoCompanyReportingService(_mockReportingRepository.Object); } [Fact] public async void GetActiveCountReport_Ok() { // Arrange var reportData = new List() { new StdReportEntry() { CollateralId = 1, RepoCompanyAssignmentDate = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 1, RepoCompanyAssignmentDate = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 2, RepoCompanyAssignmentDate = DateTime.Parse("11/15/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 3, RepoCompanyAssignmentDate = DateTime.Parse("11/15/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 4, RepoCompanyAssignmentDate = DateTime.Parse("12/20/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 5, RepoCompanyAssignmentDate = DateTime.Parse("12/22/2019") } }; _mockReportingRepository.Setup(x => x.GetAccountsByDateAssigned(It.IsAny(), It.IsAny())) .ReturnsAsync(reportData); // act var result = await _repoCompanyReportingService.GetAssignmentCountReport(DateTime.Parse("11/01/2019"), DateTime.Parse("12/31/2019")); // assert Assert.NotNull(result); Assert.Equal(6, result.DataTable.Rows.Count()); Assert.Equal(16, result.ReportTable.Cells.Length); // 4 rows of 4. Assert.Equal("All Repo Companies", result.ReportTable.Cells[0, 0].Display); Assert.Equal("3", result.ReportTable.Cells[0, 1].Display); Assert.Equal("2", result.ReportTable.Cells[0, 2].Display); Assert.Equal("5", result.ReportTable.Cells[0, 3].Display); Assert.Equal("Company A", result.ReportTable.Cells[1, 0].Display); Assert.Equal("2", result.ReportTable.Cells[1, 1].Display); Assert.Equal("-", result.ReportTable.Cells[1, 2].Display); Assert.Equal("2", result.ReportTable.Cells[1, 3].Display); Assert.Equal("Company B", result.ReportTable.Cells[2, 0].Display); Assert.Equal("1", result.ReportTable.Cells[2, 1].Display); Assert.Equal("1", result.ReportTable.Cells[2, 2].Display); Assert.Equal("2", result.ReportTable.Cells[2, 3].Display); Assert.Equal("No Repo Companies", result.ReportTable.Cells[3, 0].Display); Assert.Equal("-", result.ReportTable.Cells[3, 1].Display); Assert.Equal("1", result.ReportTable.Cells[3, 2].Display); Assert.Equal("1", result.ReportTable.Cells[3, 3].Display); } [Fact] public async void GetAvgDaysAssignedToRepoed_Ok() { // Arrange var reportData = new List() { new StdReportEntry() { CollateralId = 1, RepoDuration = 10, DateRepoed = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 2, RepoDuration = 20, DateRepoed = DateTime.Parse("11/01/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 3, RepoDuration = 5, DateRepoed = DateTime.Parse("11/29/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 4, RepoDuration = 1, DateRepoed = DateTime.Parse("12/08/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 5, RepoDuration = 5, DateRepoed = DateTime.Parse("12/31/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 6, DateRepoed = DateTime.Parse("11/21/2019"), } }; _mockReportingRepository.Setup(x => x.GetAccountsByDateRepoed(It.IsAny(), It.IsAny())) .ReturnsAsync(reportData); // act var result = await _repoCompanyReportingService.GetAvgDaysAssignedToRepoed(DateTime.Parse("11/01/2019"), DateTime.Parse("12/31/2019")); // assert Assert.NotNull(result); Assert.Equal(6, result.DataTable.Rows.Count()); Assert.Equal(12, result.ReportTable.Cells.Length); Assert.Equal("All Repo Companies", result.ReportTable.Cells[0, 0].Display); Assert.Equal("12", result.ReportTable.Cells[0, 1].Display); Assert.Equal("3", result.ReportTable.Cells[0, 2].Display); Assert.Equal("8", result.ReportTable.Cells[0, 3].Display); Assert.Equal("Company A", result.ReportTable.Cells[1, 0].Display); Assert.Equal("12", result.ReportTable.Cells[1, 1].Display); Assert.Equal("-", result.ReportTable.Cells[1, 2].Display); Assert.Equal("12", result.ReportTable.Cells[1, 3].Display); Assert.Equal("Company B", result.ReportTable.Cells[2, 0].Display); Assert.Equal("-", result.ReportTable.Cells[2, 1].Display); Assert.Equal("3", result.ReportTable.Cells[2, 2].Display); Assert.Equal("3", result.ReportTable.Cells[2, 3].Display); } [Fact] public async void GetRepoCountReport_Ok() { // Arrange var reportData = new List() { new StdReportEntry() { CollateralId = 1, DateRepoed = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 8, DateRepoed = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 2, DateRepoed = DateTime.Parse("11/15/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 3, DateRepoed = DateTime.Parse("11/15/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 4, DateRepoed = DateTime.Parse("12/20/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 5, DateRepoed = DateTime.Parse("12/22/2019") } }; _mockReportingRepository.Setup(x => x.GetAccountsByDateRepoed(It.IsAny(), It.IsAny())) .ReturnsAsync(reportData); // act var result = await _repoCompanyReportingService.GetRepoedCountReport(DateTime.Parse("11/01/2019"), DateTime.Parse("12/31/2019")); // assert Assert.NotNull(result); Assert.Equal(6, result.DataTable.Rows.Count()); Assert.Equal(16, result.ReportTable.Cells.Length); // 4 rows of 4. Assert.Equal("All Repo Companies", result.ReportTable.Cells[0, 0].Display); Assert.Equal("4", result.ReportTable.Cells[0, 1].Display); Assert.Equal("2", result.ReportTable.Cells[0, 2].Display); Assert.Equal("6", result.ReportTable.Cells[0, 3].Display); Assert.Equal("Company A", result.ReportTable.Cells[1, 0].Display); Assert.Equal("3", result.ReportTable.Cells[1, 1].Display); Assert.Equal("-", result.ReportTable.Cells[1, 2].Display); Assert.Equal("3", result.ReportTable.Cells[1, 3].Display); Assert.Equal("Company B", result.ReportTable.Cells[2, 0].Display); Assert.Equal("1", result.ReportTable.Cells[2, 1].Display); Assert.Equal("1", result.ReportTable.Cells[2, 2].Display); Assert.Equal("2", result.ReportTable.Cells[2, 3].Display); Assert.Equal("No Repo Companies", result.ReportTable.Cells[3, 0].Display); Assert.Equal("-", result.ReportTable.Cells[3, 1].Display); Assert.Equal("1", result.ReportTable.Cells[3, 2].Display); Assert.Equal("1", result.ReportTable.Cells[3, 3].Display); } [Fact] public async void GetAssignedBalance_Ok() { // Arrange var reportData = new List() { new StdReportEntry() { CollateralId = 1, Balance = 500, RepoCompanyAssignmentDate = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 8, Balance = 425.51m, RepoCompanyAssignmentDate = DateTime.Parse("11/05/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 2, Balance = 121, RepoCompanyAssignmentDate = DateTime.Parse("11/15/2019"), RepoCompany = "Company A" }, new StdReportEntry() { CollateralId = 3, Balance = 383, RepoCompanyAssignmentDate = DateTime.Parse("11/15/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 4, Balance = 99.011m, RepoCompanyAssignmentDate = DateTime.Parse("12/20/2019"), RepoCompany = "Company B" }, new StdReportEntry() { CollateralId = 5, Balance = 4, RepoCompanyAssignmentDate = DateTime.Parse("12/22/2019") } }; _mockReportingRepository.Setup(x => x.GetAccountsByDateAssigned(It.IsAny(), It.IsAny())) .ReturnsAsync(reportData); // act var result = await _repoCompanyReportingService.GetAssignedBalance(DateTime.Parse("11/01/2019"), DateTime.Parse("12/31/2019")); // assert Assert.NotNull(result); Assert.Equal(6, result.DataTable.Rows.Count()); Assert.Equal(16, result.ReportTable.Cells.Length); // 4 rows of 4. Assert.Equal("All Repo Companies", result.ReportTable.Cells[0, 0].Display); Assert.Equal("$1,429.51", result.ReportTable.Cells[0, 1].Display); Assert.Equal("$103.01", result.ReportTable.Cells[0, 2].Display); Assert.Equal("$1,532.52", result.ReportTable.Cells[0, 3].Display); Assert.Equal("Company A", result.ReportTable.Cells[1, 0].Display); Assert.Equal("$1,046.51", result.ReportTable.Cells[1, 1].Display); Assert.Equal("-", result.ReportTable.Cells[1, 2].Display); Assert.Equal("$1,046.51", result.ReportTable.Cells[1, 3].Display); Assert.Equal("Company B", result.ReportTable.Cells[2, 0].Display); Assert.Equal("$383.00", result.ReportTable.Cells[2, 1].Display); Assert.Equal("$99.01", result.ReportTable.Cells[2, 2].Display); Assert.Equal("$482.01", result.ReportTable.Cells[2, 3].Display); Assert.Equal("No Repo Companies", result.ReportTable.Cells[3, 0].Display); Assert.Equal("-", result.ReportTable.Cells[3, 1].Display); Assert.Equal("$4.00", result.ReportTable.Cells[3, 2].Display); Assert.Equal("$4.00", result.ReportTable.Cells[3, 3].Display); } } }