using JdeScoping.ExcelIO.Tests.Fixtures; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using Shouldly; using Xunit; namespace JdeScoping.ExcelIO.Tests.Integration; public class ProtectionAndStyleTests : IClassFixture { private readonly XSSFWorkbook _workbook; public ProtectionAndStyleTests(WithMisDataFixture fixture) { _workbook = fixture.Workbook; } [Fact] public void AllDataSheets_AreProtected() { ((XSSFSheet)_workbook.GetSheet("Search Results")!).IsSheetLocked.ShouldBeTrue(); ((XSSFSheet)_workbook.GetSheet("MIS Info")!).IsSheetLocked.ShouldBeTrue(); ((XSSFSheet)_workbook.GetSheet("Investigation")!).IsSheetLocked.ShouldBeTrue(); } [Fact] public void Protection_AllowsFiltering() { var sheet = (XSSFSheet)_workbook.GetSheet("Search Results")!; sheet.IsAutoFilterLocked.ShouldBeFalse(); } [Fact] public void Protection_AllowsSorting() { var sheet = (XSSFSheet)_workbook.GetSheet("Search Results")!; sheet.IsSortLocked.ShouldBeFalse(); } [Fact] public void Protection_AllowsFormatting() { var sheet = (XSSFSheet)_workbook.GetSheet("Search Results")!; sheet.IsFormatCellsLocked.ShouldBeFalse(); sheet.IsFormatColumnsLocked.ShouldBeFalse(); sheet.IsFormatRowsLocked.ShouldBeFalse(); } [Fact] public void AllTables_UseLight18Style() { ExcelTestHelpers.GetFirstTable(_workbook.GetSheet("Search Results")!).StyleName.ShouldBe("TableStyleLight18"); ExcelTestHelpers.GetFirstTable(_workbook.GetSheet("MIS Info")!).StyleName.ShouldBe("TableStyleLight18"); ExcelTestHelpers.GetFirstTable(_workbook.GetSheet("Investigation")!).StyleName.ShouldBe("TableStyleLight18"); } [Fact] public void HeaderCells_HaveCorrectFormatting() { var sheet = _workbook.GetSheet("Search Criteria")!; var headerCell = ExcelTestHelpers.GetCell(sheet, 1, 1)!; (headerCell.CellStyle.FontIndex >= 0 && _workbook.GetFontAt(headerCell.CellStyle.FontIndex).IsBold).ShouldBeTrue(); ExcelTestHelpers.GetFillForegroundRgb(headerCell).ShouldBe([0xDC, 0xDC, 0xDC]); headerCell.CellStyle.Alignment.ShouldBe(HorizontalAlignment.Center); } [Fact] public void CriteriaTimestamp_MatchesLegacyFormat() { var sheet = _workbook.GetSheet("Search Criteria")!; var timestamp = ExcelTestHelpers.GetCellText(sheet, 4, 2); timestamp.ShouldContain("Jan 15, 2024"); timestamp.ShouldContain("02:30:45"); timestamp.ShouldContain("EST"); } }