using JdeScoping.ExcelIO.Formatting; using JdeScoping.ExcelIO.Tests.Fixtures; using NPOI.XSSF.UserModel; using Shouldly; using Xunit; namespace JdeScoping.ExcelIO.Tests; public class HeaderFormatterTests { [Fact] public void ApplyHeaderFormat_Cell_AppliesCorrectStyling() { using var workbook = new XSSFWorkbook(); var worksheet = workbook.CreateSheet("Test"); var row = worksheet.CreateRow(0); var cell = row.CreateCell(0); HeaderFormatter.ApplyHeaderFormat(cell, "Test Header"); ExcelTestHelpers.GetCellText(worksheet, 1, 1).ShouldBe("Test Header"); cell.CellStyle.GetFont(workbook).IsBold.ShouldBeTrue(); cell.CellStyle.Alignment.ShouldBe(NPOI.SS.UserModel.HorizontalAlignment.Center); ExcelTestHelpers.GetFillForegroundRgb(cell).ShouldBe([0xDC, 0xDC, 0xDC]); } [Fact] public void ApplyHeaderFormat_Cell_WithoutText_AppliesOnlyStyling() { using var workbook = new XSSFWorkbook(); var worksheet = workbook.CreateSheet("Test"); var row = worksheet.CreateRow(0); var cell = row.CreateCell(0); cell.SetCellValue("Original"); HeaderFormatter.ApplyHeaderFormat(cell); ExcelTestHelpers.GetCellText(worksheet, 1, 1).ShouldBe("Original"); cell.CellStyle.GetFont(workbook).IsBold.ShouldBeTrue(); } [Fact] public void ApplyHeaderFormat_Range_AppliesCorrectStyling() { using var workbook = new XSSFWorkbook(); var worksheet = workbook.CreateSheet("Test"); HeaderFormatter.ApplyHeaderFormat(worksheet, 1, 1, 1, 3, "Header", merge: false); ExcelTestHelpers.GetCellText(worksheet, 1, 1).ShouldBe("Header"); for (var col = 1; col <= 3; col++) { var cell = ExcelTestHelpers.GetCell(worksheet, 1, col)!; cell.CellStyle.GetFont(workbook).IsBold.ShouldBeTrue(); ExcelTestHelpers.GetFillForegroundRgb(cell).ShouldBe([0xDC, 0xDC, 0xDC]); } } [Fact] public void ApplyHeaderFormat_Range_WithMerge_MergesCells() { using var workbook = new XSSFWorkbook(); var worksheet = workbook.CreateSheet("Test"); HeaderFormatter.ApplyHeaderFormat(worksheet, 1, 1, 1, 3, "Merged Header", merge: true); ExcelTestHelpers.IsMerged(worksheet, 1, 1, 1, 3).ShouldBeTrue(); ExcelTestHelpers.GetCellText(worksheet, 1, 1).ShouldBe("Merged Header"); } [Fact] public void ApplyHeaderFormat_Range_WithoutMerge_DoesNotMergeCells() { using var workbook = new XSSFWorkbook(); var worksheet = workbook.CreateSheet("Test"); HeaderFormatter.ApplyHeaderFormat(worksheet, 1, 1, 1, 3, "Not Merged", merge: false); ExcelTestHelpers.IsMerged(worksheet, 1, 1, 1, 3).ShouldBeFalse(); } }