Files
2026-04-20 14:47:24 -05:00

334 lines
14 KiB
C#

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<IReportingRepository> _mockReportingRepository;
public RepoCompanyReportingServiceTest()
{
_mockReportingRepository = new Mock<IReportingRepository>();
_repoCompanyReportingService =
new RepoCompanyReportingService(_mockReportingRepository.Object);
}
[Fact]
public async void GetActiveCountReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
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<DateTime>(), It.IsAny<DateTime>()))
.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<StdReportEntry>()
{
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<DateTime>(), It.IsAny<DateTime>()))
.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<StdReportEntry>()
{
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<DateTime>(), It.IsAny<DateTime>()))
.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<StdReportEntry>()
{
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<DateTime>(), It.IsAny<DateTime>()))
.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);
}
}
}