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

430 lines
16 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 LandmarkReportingServiceTest
{
private LandmarkReportingService _landmarkReportingService;
private Mock<IReportingRepository> _mockRepository;
public LandmarkReportingServiceTest()
{
_mockRepository = new Mock<IReportingRepository>();
_landmarkReportingService = new LandmarkReportingService(_mockRepository.Object);
}
[Fact]
public async void GetAvgDaysRepoToSold_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
DateRepoed = DateTime.Parse("11/01/2019"),
FilteredStatusChangeDate = DateTime.Parse("12/01/2019")
},
new StdReportEntry()
{
RepoId = 2,
DateRepoed = DateTime.Parse("11/15/2019"),
FilteredStatusChangeDate = DateTime.Parse("11/25/2019")
},
new StdReportEntry()
{
RepoId = 3
},
new StdReportEntry()
{
RepoId = 4,
DateRepoed = DateTime.Parse("11/22/2019")
},
new StdReportEntry()
{
RepoId = 5,
FilteredStatusChangeDate = DateTime.Parse("12/21/2019")
},
new StdReportEntry()
{
RepoId = 6,
DateRepoed = DateTime.Parse("12/21/2019"),
FilteredStatusChangeDate = DateTime.Parse("12/31/2019")
},
};
_mockRepository.Setup(repo =>
repo.GetAccountsByStatusChangeInPeriod(It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetAvgDaysRepoToSoldReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(6, result.DataTable.Rows.Count());
Assert.Equal(4, result.ReportTable.Cells.Length);
Assert.Equal("All Sold Accounts", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("10", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("20", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("17", result.ReportTable.Cells[0, 3].Display);
}
[Fact]
public async void GetRedemptionCountReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
FilteredStatusChangeDate = DateTime.Parse("11/01/2019")
},
new StdReportEntry()
{
RepoId = 1,
FilteredStatusChangeDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 1,
FilteredStatusChangeDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 5,
FilteredStatusChangeDate = DateTime.Parse("12/01/2019")
},
new StdReportEntry()
{
RepoId = 6,
FilteredStatusChangeDate = DateTime.Parse("11/30/2019")
},
};
_mockRepository.Setup(repo =>
repo.GetAccountsByStatusChangeInPeriod(It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetRedemptionCountReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(5, result.DataTable.Rows.Count());
Assert.Equal(4, result.ReportTable.Cells.Length);
Assert.Equal("All Redemptions", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("3", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("1", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("4", result.ReportTable.Cells[0, 3].Display);
}
[Fact]
public async void GetAvgDaysDelqWhenAddedReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
DaysDelqWhenAdded = 25,
O4RDate = DateTime.Parse("11/01/2019")
},
new StdReportEntry()
{
RepoId = 2,
DaysDelqWhenAdded = 38,
O4RDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 3,
DaysDelqWhenAdded = 19,
O4RDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 4,
DaysDelqWhenAdded = 12,
O4RDate = DateTime.Parse("12/01/2019")
},
};
_mockRepository.Setup(repo => repo.GetAccountsByO4RDate(It.IsAny<DateTime>(), It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetAvgDaysDelqWhenAddedReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(4, result.DataTable.Rows.Count());
Assert.Equal(4, result.ReportTable.Cells.Length);
Assert.Equal("All Accounts", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("27", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("12", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("24", result.ReportTable.Cells[0, 3].Display);
}
[Fact]
public async void GetCountOfSalesReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
FilteredStatusChangeDate = DateTime.Parse("11/01/2019")
},
new StdReportEntry()
{
RepoId = 2,
FilteredStatusChangeDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 3,
FilteredStatusChangeDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 4,
FilteredStatusChangeDate = DateTime.Parse("12/01/2019")
},
};
_mockRepository.Setup(repo =>
repo.GetAccountsByStatusChangeInPeriod(It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetCountOfSalesReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(4, result.DataTable.Rows.Count());
Assert.Equal(4, result.ReportTable.Cells.Length);
Assert.Equal("All Sold Accounts", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("3", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("1", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("4", result.ReportTable.Cells[0, 3].Display);
}
[Fact]
public async void GetAvgSurplusReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
GrossSalePrice = 3000,
Balance = 3500,
AuctionName = "Auction A",
SoldDate = DateTime.Parse("11/01/2019")
},
new StdReportEntry()
{
RepoId = 2,
GrossSalePrice = 500,
Balance = 1200,
AuctionName = "Auction B",
SoldDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 3,
GrossSalePrice = 700,
Balance = 650,
AuctionName = "Auction B",
SoldDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 4,
GrossSalePrice = 8000,
Balance = 4000,
AuctionName = "Auction A",
SoldDate = DateTime.Parse("12/01/2019")
},
};
_mockRepository.Setup(repo =>
repo.GetAccountsByDateSoldInAutoIMS(It.IsAny<DateTime>(), It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetAvgSurplusReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(4, result.DataTable.Rows.Count());
Assert.Equal(12, result.ReportTable.Cells.Length);
Assert.Equal("All Sold Accounts", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("($383.33)", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("$4,000.00", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("$712.50", result.ReportTable.Cells[0, 3].Display);
Assert.Equal("Auction A", result.ReportTable.Cells[1, 0].Display);
Assert.Equal("($500.00)", result.ReportTable.Cells[1, 1].Display);
Assert.Equal("$4,000.00", result.ReportTable.Cells[1, 2].Display);
Assert.Equal("$1,750.00", result.ReportTable.Cells[1, 3].Display);
Assert.Equal("Auction B", result.ReportTable.Cells[2, 0].Display);
Assert.Equal("($325.00)", result.ReportTable.Cells[2, 1].Display);
Assert.Equal("-", result.ReportTable.Cells[2, 2].Display);
Assert.Equal("($325.00)", result.ReportTable.Cells[2, 3].Display);
}
[Fact]
public async void GetRepoBalanceReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
Balance = 300m,
RepoCompany = "Company A",
DateRepoed = DateTime.Parse("11/01/2019")
},
new StdReportEntry()
{
RepoId = 2,
Balance = 275.49005m,
RepoCompany = "Company A",
DateRepoed = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 3,
Balance = 999.91m,
RepoCompany = "Company B",
DateRepoed = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 4,
Balance = 100m,
RepoCompany = "Company B",
DateRepoed = DateTime.Parse("12/01/2019")
},
new StdReportEntry()
{
RepoId = 5,
Balance = 210m,
DateRepoed = DateTime.Parse("12/11/2019")
},
};
_mockRepository.Setup(repo => repo.GetAccountsByDateRepoed(It.IsAny<DateTime>(), It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetRepoBalanceReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(5, result.DataTable.Rows.Count());
Assert.Equal(16, result.ReportTable.Cells.Length);
Assert.Equal("All Companies", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("$1,575.40", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("$310.00", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("$1,885.40", result.ReportTable.Cells[0, 3].Display);
Assert.Equal("Company A", result.ReportTable.Cells[1, 0].Display);
Assert.Equal("$575.49", result.ReportTable.Cells[1, 1].Display);
Assert.Equal("-", result.ReportTable.Cells[1, 2].Display);
Assert.Equal("$575.49", result.ReportTable.Cells[1, 3].Display);
Assert.Equal("Company B", result.ReportTable.Cells[2, 0].Display);
Assert.Equal("$999.91", result.ReportTable.Cells[2, 1].Display);
Assert.Equal("$100.00", result.ReportTable.Cells[2, 2].Display);
Assert.Equal("$1,099.91", result.ReportTable.Cells[2, 3].Display);
Assert.Equal("No Companies", result.ReportTable.Cells[3, 0].Display);
Assert.Equal("-", result.ReportTable.Cells[3, 1].Display);
Assert.Equal("$210.00", result.ReportTable.Cells[3, 2].Display);
Assert.Equal("$210.00", result.ReportTable.Cells[3, 3].Display);
}
[Fact]
public async void GetRedemptionBalanceReport_Ok()
{
// Arrange
var reportData = new List<StdReportEntry>()
{
new StdReportEntry()
{
RepoId = 1,
Balance = 250,
FilteredStatusChangeDate = DateTime.Parse("11/01/2019")
},
new StdReportEntry()
{
RepoId = 2,
Balance = 150,
FilteredStatusChangeDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 3,
Balance = 99.99m,
FilteredStatusChangeDate = DateTime.Parse("11/02/2019")
},
new StdReportEntry()
{
RepoId = 4,
Balance = 1.49m,
FilteredStatusChangeDate = DateTime.Parse("12/01/2019")
},
};
_mockRepository.Setup(repo =>
repo.GetAccountsByStatusChangeInPeriod(It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<DateTime>()))
.ReturnsAsync(reportData);
// Act
var result =
await _landmarkReportingService.GetRedemptionBalanceReport(DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"));
// Assert
Assert.NotNull(result);
Assert.Equal(4, result.DataTable.Rows.Count());
Assert.Equal(4, result.ReportTable.Cells.Length);
Assert.Equal("All Redeemed Accounts", result.ReportTable.Cells[0, 0].Display);
Assert.Equal("$499.99", result.ReportTable.Cells[0, 1].Display);
Assert.Equal("$1.49", result.ReportTable.Cells[0, 2].Display);
Assert.Equal("$501.48", result.ReportTable.Cells[0, 3].Display);
}
}
}