26ff8d9b4f
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
97 lines
2.8 KiB
C#
97 lines
2.8 KiB
C#
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);
|
|
}
|
|
}
|