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,96 @@
|
||||
using ClosedXML.Excel;
|
||||
using JdeScoping.ExcelIO.Templates;
|
||||
using Shouldly;
|
||||
using Xunit;
|
||||
|
||||
namespace JdeScoping.ExcelIO.Tests.Templates;
|
||||
|
||||
public class ExcelTemplateServiceTests
|
||||
{
|
||||
private readonly ExcelTemplateService _service = new();
|
||||
|
||||
[Fact]
|
||||
public void GenerateSingleColumn_CreatesValidExcel()
|
||||
{
|
||||
// Arrange
|
||||
var data = new[] { 12345L, 67890L };
|
||||
|
||||
// Act
|
||||
var result = _service.GenerateSingleColumn(data, "Work Order Number");
|
||||
|
||||
// Assert
|
||||
result.ShouldNotBeNull();
|
||||
result.Length.ShouldBeGreaterThan(0);
|
||||
|
||||
// Verify content
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheet(1);
|
||||
|
||||
worksheet.Cell(1, 1).GetString().ShouldBe("Work Order Number");
|
||||
worksheet.Cell(2, 1).GetString().ShouldBe("12345");
|
||||
worksheet.Cell(3, 1).GetString().ShouldBe("67890");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateMultiColumn_CreatesValidExcel()
|
||||
{
|
||||
// Arrange
|
||||
var data = new[]
|
||||
{
|
||||
new object?[] { "ITEM-001", "Description 1" },
|
||||
new object?[] { "ITEM-002", "Description 2" }
|
||||
};
|
||||
var headers = new[] { "Item Number", "Description" };
|
||||
|
||||
// Act
|
||||
var result = _service.GenerateMultiColumn(data, headers);
|
||||
|
||||
// Assert
|
||||
result.ShouldNotBeNull();
|
||||
result.Length.ShouldBeGreaterThan(0);
|
||||
|
||||
// Verify content
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheet(1);
|
||||
|
||||
worksheet.Cell(1, 1).GetString().ShouldBe("Item Number");
|
||||
worksheet.Cell(1, 2).GetString().ShouldBe("Description");
|
||||
worksheet.Cell(2, 1).GetString().ShouldBe("ITEM-001");
|
||||
worksheet.Cell(2, 2).GetString().ShouldBe("Description 1");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateSingleColumn_HandlesEmptyData()
|
||||
{
|
||||
// Act
|
||||
var result = _service.GenerateSingleColumn(Array.Empty<string>(), "Header");
|
||||
|
||||
// Assert
|
||||
result.ShouldNotBeNull();
|
||||
result.Length.ShouldBeGreaterThan(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateMultiColumn_HandlesNullValues()
|
||||
{
|
||||
// Arrange
|
||||
var data = new[]
|
||||
{
|
||||
new object?[] { "ITEM-001", null }
|
||||
};
|
||||
var headers = new[] { "Item", "Value" };
|
||||
|
||||
// Act
|
||||
var result = _service.GenerateMultiColumn(data, headers);
|
||||
|
||||
// Assert
|
||||
result.ShouldNotBeNull();
|
||||
using var stream = new MemoryStream(result);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheet(1);
|
||||
|
||||
worksheet.Cell(2, 2).GetString().ShouldBe(string.Empty);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user