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() { 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() { 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() { 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); } } }