using ClosedXML.Excel; using JdeScoping.ExcelIO.Tests.Fixtures; using Shouldly; using Xunit; namespace JdeScoping.ExcelIO.Tests.Integration; public class ProtectionAndStyleTests : IClassFixture { private readonly XLWorkbook _workbook; public ProtectionAndStyleTests(WithMisDataFixture fixture) { _workbook = fixture.Workbook; } [Fact] public void AllDataSheets_AreProtected() { _workbook.Worksheet("Search Results").Protection.IsProtected.ShouldBeTrue(); _workbook.Worksheet("MIS Info").Protection.IsProtected.ShouldBeTrue(); _workbook.Worksheet("Investigation").Protection.IsProtected.ShouldBeTrue(); } [Fact] public void Protection_AllowsFiltering() { var sheet = _workbook.Worksheet("Search Results"); sheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.AutoFilter).ShouldBeTrue(); } [Fact] public void Protection_AllowsSorting() { var sheet = _workbook.Worksheet("Search Results"); sheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.Sort).ShouldBeTrue(); } [Fact] public void Protection_AllowsFormatting() { var sheet = _workbook.Worksheet("Search Results"); sheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatCells).ShouldBeTrue(); sheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatColumns).ShouldBeTrue(); sheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatRows).ShouldBeTrue(); } [Fact] public void AllTables_UseLight18Style() { _workbook.Worksheet("Search Results").Tables.First().Theme.ShouldBe(XLTableTheme.TableStyleLight18); _workbook.Worksheet("MIS Info").Tables.First().Theme.ShouldBe(XLTableTheme.TableStyleLight18); _workbook.Worksheet("Investigation").Tables.First().Theme.ShouldBe(XLTableTheme.TableStyleLight18); } [Fact] public void HeaderCells_HaveCorrectFormatting() { var sheet = _workbook.Worksheet("Search Criteria"); var headerCell = sheet.Cell(1, 1); headerCell.Style.Font.Bold.ShouldBeTrue(); headerCell.Style.Fill.BackgroundColor.ShouldBe(XLColor.Gainsboro); headerCell.Style.Alignment.Horizontal.ShouldBe(XLAlignmentHorizontalValues.Center); } [Fact] public void CriteriaTimestamp_MatchesLegacyFormat() { var sheet = _workbook.Worksheet("Search Criteria"); var timestamp = sheet.Cell(4, 2).Value.GetText(); timestamp.ShouldContain("Jan 15, 2024"); timestamp.ShouldContain("02:30:45"); timestamp.ShouldContain("EST"); } }