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

228 lines
8.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using LCU.API.Collections.RepoApi.Factories;
using Xunit;
namespace LCU.API.Collections.RepoApiTests
{
internal class DummyDataClass
{
public decimal? ValueField { get; set; }
public int KeyField { get; set; }
public DateTime DateField { get; set; }
public string SummationField { get; set; }
}
public class ReportTableFactoryTest
{
[Fact]
public void CreateHistoricalSummationTable_Currency_Ok()
{
// Arrange
var dummyData = new List<DummyDataClass>()
{
new DummyDataClass()
{
KeyField = 1,
DateField = DateTime.Parse("11/15/2019"),
ValueField = 25.75m,
SummationField = "Row A"
},
new DummyDataClass()
{
KeyField = 1,
DateField = DateTime.Parse("11/15/2019"),
ValueField = 25.75m,
SummationField = "Row A"
},
new DummyDataClass()
{
KeyField = 2,
DateField = DateTime.Parse("11/05/2019"),
ValueField = 10.05m,
SummationField = "Row B"
},
new DummyDataClass()
{
KeyField = 3,
DateField = DateTime.Parse("11/20/2019"),
ValueField = 7.50m,
SummationField = "Row A"
},
new DummyDataClass()
{
KeyField = 4,
DateField = DateTime.Parse("12/10/2019"),
ValueField = 50.500001m,
SummationField = "Row B"
},
new DummyDataClass()
{
KeyField = 5,
DateField = DateTime.Parse("12/25/2019"),
ValueField = 75.49m,
SummationField = "Row C"
},
new DummyDataClass()
{
KeyField = 6,
DateField = DateTime.Parse("12/18/2019"),
ValueField = 32
},
};
// Act
var reportTable = ReportTableFactory.CreateHistoricalSummationTable(
ReportSumType.Currency,
dummyData,
"Data Items",
DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"),
(x) => x.ValueField,
(x) => x.SummationField,
(x) => x.DateField,
(x) => x.KeyField);
// Assert
Assert.NotNull(reportTable);
Assert.Equal(20, reportTable.Cells.Length);
// Assert Table Display
Assert.Equal("All Data Items", reportTable.Cells[0, 0].Display);
Assert.Equal("$43.30", reportTable.Cells[0, 1].Display);
Assert.Equal("$157.99", reportTable.Cells[0, 2].Display);
Assert.Equal("$201.29", reportTable.Cells[0, 3].Display);
Assert.Equal("Row A", reportTable.Cells[1, 0].Display);
Assert.Equal("$33.25", reportTable.Cells[1, 1].Display);
Assert.Equal("-", reportTable.Cells[1, 2].Display);
Assert.Equal("$33.25", reportTable.Cells[1, 3].Display);
Assert.Equal("Row B", reportTable.Cells[2, 0].Display);
Assert.Equal("$10.05", reportTable.Cells[2, 1].Display);
Assert.Equal("$50.50", reportTable.Cells[2, 2].Display);
Assert.Equal("$60.55", reportTable.Cells[2, 3].Display);
Assert.Equal("Row C", reportTable.Cells[3, 0].Display);
Assert.Equal("-", reportTable.Cells[3, 1].Display);
Assert.Equal("$75.49", reportTable.Cells[3, 2].Display);
Assert.Equal("$75.49", reportTable.Cells[3, 3].Display);
Assert.Equal("No Data Items", reportTable.Cells[4, 0].Display);
Assert.Equal("-", reportTable.Cells[4, 1].Display);
Assert.Equal("$32.00", reportTable.Cells[4, 2].Display);
Assert.Equal("$32.00", reportTable.Cells[4, 3].Display);
}
[Fact]
public void CreateHistoricalSummationTable_PercentageAvg_Ok()
{
// Arrange
var dummyData = new List<DummyDataClass>()
{
new DummyDataClass()
{
KeyField = 1,
DateField = DateTime.Parse("11/15/2019"),
ValueField = 110m,
SummationField = "Row A"
},
new DummyDataClass()
{
KeyField = 2,
DateField = DateTime.Parse("11/12/2019"),
ValueField = 50m,
SummationField = "Row A"
},
new DummyDataClass()
{
KeyField = 3,
DateField = DateTime.Parse("12/10/2019"),
ValueField = 75m,
SummationField = "Row B"
},
new DummyDataClass()
{
KeyField = 4,
DateField = DateTime.Parse("12/11/2019"),
SummationField = "Row B"
}
};
// Act
var reportTable = ReportTableFactory.CreateHistoricalSummationTable(
ReportSumType.PercentageAvg,
dummyData,
"Data Items",
DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"),
(x) => x.ValueField,
(x) => x.SummationField,
(x) => x.DateField,
(x) => x.KeyField,
false);
// Assert
Assert.NotNull(reportTable);
Assert.Equal(12, reportTable.Cells.Length);
// Assert Table Display
Assert.Equal("All Data Items", reportTable.Cells[0, 0].Display);
Assert.Equal("80.00 %", reportTable.Cells[0, 1].Display);
Assert.Equal("75.00 %", reportTable.Cells[0, 2].Display);
Assert.Equal("78.33 %", reportTable.Cells[0, 3].Display);
Assert.Equal("Row A", reportTable.Cells[1, 0].Display);
Assert.Equal("80.00 %", reportTable.Cells[1, 1].Display);
Assert.Equal("-", reportTable.Cells[1, 2].Display);
Assert.Equal("80.00 %", reportTable.Cells[1, 3].Display);
Assert.Equal("Row B", reportTable.Cells[2, 0].Display);
Assert.Equal("-", reportTable.Cells[2, 1].Display);
Assert.Equal("75.00 %", reportTable.Cells[2, 2].Display);
Assert.Equal("75.00 %", reportTable.Cells[2, 3].Display);
}
[Fact]
public void CreateHistoricalSummationTable_RenersSingleRow_Ok()
{
// Arrange
var dummyData = new List<DummyDataClass>()
{
new DummyDataClass()
{
KeyField = 1,
DateField = DateTime.Parse("11/15/2019"),
ValueField = 1000
}
};
// Act
var reportTable = ReportTableFactory.CreateHistoricalSummationTable(
ReportSumType.Currency,
dummyData,
"Data Items",
DateTime.Parse("11/01/2019"),
DateTime.Parse("12/31/2019"),
(x) => x.ValueField,
(x) => null,
(x) => x.DateField,
(x) => x.KeyField,
false);
// Assert
Assert.NotNull(reportTable);
Assert.Equal(4, reportTable.Cells.Length);
// Assert Table Display
Assert.Equal("All Data Items", reportTable.Cells[0, 0].Display);
Assert.Equal("$1,000.00", reportTable.Cells[0, 1].Display);
Assert.Equal("-", reportTable.Cells[0, 2].Display);
Assert.Equal("$1,000.00", reportTable.Cells[0, 3].Display);
}
}
}