Initial commit: JDE Scoping Tool migration project
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
using ClosedXML.Excel;
|
||||
using JdeScoping.ExcelIO.Generators;
|
||||
using Shouldly;
|
||||
using Xunit;
|
||||
|
||||
namespace JdeScoping.ExcelIO.Tests;
|
||||
|
||||
public class DataEntryTemplateGeneratorTests
|
||||
{
|
||||
private readonly DataEntryTemplateGenerator _generator = new();
|
||||
|
||||
[Fact]
|
||||
public void Generate_SingleColumn_ReturnsValidExcel()
|
||||
{
|
||||
var result = _generator.Generate<string>(null, "Test Header");
|
||||
|
||||
result.ShouldNotBeNull();
|
||||
result.Length.ShouldBeGreaterThan(0);
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
workbook.Worksheets.Count.ShouldBe(1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_SingleColumn_HasCorrectHeader()
|
||||
{
|
||||
var result = _generator.Generate<string>(null, "Item Numbers");
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Cell(1, 1).Value.GetText().ShouldBe("Item Numbers");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_SingleColumn_HasHeaderFormatting()
|
||||
{
|
||||
var result = _generator.Generate<string>(null, "Test Header");
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
var headerCell = worksheet.Cell(1, 1);
|
||||
|
||||
headerCell.Style.Font.Bold.ShouldBeTrue();
|
||||
headerCell.Style.Fill.BackgroundColor.ShouldBe(XLColor.Gainsboro);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_SingleColumn_WithData_PopulatesRows()
|
||||
{
|
||||
var data = new List<string> { "Item1", "Item2", "Item3" };
|
||||
|
||||
var result = _generator.Generate(data, "Items");
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Cell(2, 1).Value.GetText().ShouldBe("Item1");
|
||||
worksheet.Cell(3, 1).Value.GetText().ShouldBe("Item2");
|
||||
worksheet.Cell(4, 1).Value.GetText().ShouldBe("Item3");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_SingleColumn_SetsTextFormat()
|
||||
{
|
||||
var result = _generator.Generate<string>(null, "Test");
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Column(1).Style.NumberFormat.Format.ShouldBe("@");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_MultiColumn_ReturnsValidExcel()
|
||||
{
|
||||
var headers = new[] { "Column A", "Column B", "Column C" };
|
||||
|
||||
var result = _generator.Generate(null, headers);
|
||||
|
||||
result.ShouldNotBeNull();
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Cell(1, 1).Value.GetText().ShouldBe("Column A");
|
||||
worksheet.Cell(1, 2).Value.GetText().ShouldBe("Column B");
|
||||
worksheet.Cell(1, 3).Value.GetText().ShouldBe("Column C");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_MultiColumn_WithData_PopulatesRows()
|
||||
{
|
||||
var headers = new[] { "Name", "Value" };
|
||||
var data = new[]
|
||||
{
|
||||
new object[] { "Row1", 100 },
|
||||
new object[] { "Row2", 200 }
|
||||
};
|
||||
|
||||
var result = _generator.Generate(data, headers);
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Cell(2, 1).Value.GetText().ShouldBe("Row1");
|
||||
worksheet.Cell(2, 2).Value.GetNumber().ShouldBe(100);
|
||||
worksheet.Cell(3, 1).Value.GetText().ShouldBe("Row2");
|
||||
worksheet.Cell(3, 2).Value.GetNumber().ShouldBe(200);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_MultiColumn_SetsColumnWidth()
|
||||
{
|
||||
var headers = new[] { "Column A", "Column B" };
|
||||
|
||||
var result = _generator.Generate(null, headers);
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Column(1).Width.ShouldBe(65);
|
||||
worksheet.Column(2).Width.ShouldBe(65);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Generate_SingleColumn_SetsColumnWidth()
|
||||
{
|
||||
var result = _generator.Generate<string>(null, "Test");
|
||||
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheets.First();
|
||||
|
||||
worksheet.Column(1).Width.ShouldBe(45);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user