using JdeScoping.ExcelIO.Templates; using JdeScoping.ExcelIO.Tests.Fixtures; using Shouldly; using Xunit; namespace JdeScoping.ExcelIO.Tests.Templates; public class ExcelTemplateServiceTests { private readonly ExcelTemplateService _service = new(); [Fact] public void GenerateSingleColumn_CreatesValidExcel() { var data = new[] { 12345L, 67890L }; var result = _service.GenerateSingleColumn(data, "Work Order Number"); result.ShouldNotBeNull(); result.Length.ShouldBeGreaterThan(0); using var workbook = ExcelTestHelpers.OpenWorkbook(result); var worksheet = workbook.GetSheetAt(0); ExcelTestHelpers.GetCellText(worksheet, 1, 1).ShouldBe("Work Order Number"); ExcelTestHelpers.GetCellText(worksheet, 2, 1).ShouldBe("12345"); ExcelTestHelpers.GetCellText(worksheet, 3, 1).ShouldBe("67890"); } [Fact] public void GenerateMultiColumn_CreatesValidExcel() { var data = new[] { new object?[] { "ITEM-001", "Description 1" }, new object?[] { "ITEM-002", "Description 2" } }; var headers = new[] { "Item Number", "Description" }; var result = _service.GenerateMultiColumn(data, headers); result.ShouldNotBeNull(); result.Length.ShouldBeGreaterThan(0); using var workbook = ExcelTestHelpers.OpenWorkbook(result); var worksheet = workbook.GetSheetAt(0); ExcelTestHelpers.GetCellText(worksheet, 1, 1).ShouldBe("Item Number"); ExcelTestHelpers.GetCellText(worksheet, 1, 2).ShouldBe("Description"); ExcelTestHelpers.GetCellText(worksheet, 2, 1).ShouldBe("ITEM-001"); ExcelTestHelpers.GetCellText(worksheet, 2, 2).ShouldBe("Description 1"); } [Fact] public void GenerateSingleColumn_HandlesEmptyData() { var result = _service.GenerateSingleColumn(Array.Empty(), "Header"); result.ShouldNotBeNull(); result.Length.ShouldBeGreaterThan(0); } [Fact] public void GenerateMultiColumn_HandlesNullValues() { var data = new[] { new object?[] { "ITEM-001", null } }; var headers = new[] { "Item", "Value" }; var result = _service.GenerateMultiColumn(data, headers); result.ShouldNotBeNull(); using var workbook = ExcelTestHelpers.OpenWorkbook(result); var worksheet = workbook.GetSheetAt(0); ExcelTestHelpers.GetCellText(worksheet, 2, 2).ShouldBe(string.Empty); } }