using JdeScoping.ExcelIO.Formatting; using JdeScoping.ExcelIO.Tests.Fixtures; using NPOI.XSSF.UserModel; using Shouldly; using Xunit; namespace JdeScoping.ExcelIO.Tests; public class WorksheetProtectorTests { [Fact] public void ApplyProtection_ProtectsWorksheet() { using var workbook = new XSSFWorkbook(); var worksheet = (XSSFSheet)workbook.CreateSheet("Test"); WorksheetProtector.ApplyProtection(worksheet, "TestPassword"); worksheet.IsSheetLocked.ShouldBeTrue(); } [Fact] public void ApplyProtection_AllowsSpecifiedOperations() { using var workbook = new XSSFWorkbook(); var worksheet = (XSSFSheet)workbook.CreateSheet("Test"); WorksheetProtector.ApplyProtection(worksheet, "TestPassword"); worksheet.IsDeleteColumnsLocked.ShouldBeFalse(); worksheet.IsDeleteRowsLocked.ShouldBeFalse(); worksheet.IsAutoFilterLocked.ShouldBeFalse(); worksheet.IsFormatCellsLocked.ShouldBeFalse(); worksheet.IsFormatColumnsLocked.ShouldBeFalse(); worksheet.IsFormatRowsLocked.ShouldBeFalse(); worksheet.IsSelectLockedCellsLocked.ShouldBeFalse(); worksheet.IsSelectUnlockedCellsLocked.ShouldBeFalse(); worksheet.IsObjectsLocked.ShouldBeFalse(); worksheet.IsSortLocked.ShouldBeFalse(); } [Fact] public void ApplyProtection_AllowsDeleteRows() { using var workbook = new XSSFWorkbook(); var worksheet = (XSSFSheet)workbook.CreateSheet("Test"); WorksheetProtector.ApplyProtection(worksheet, "TestPassword"); worksheet.IsDeleteRowsLocked.ShouldBeFalse(); } [Fact] public void ApplyCriteriaProtection_ProtectsWorksheet() { using var workbook = new XSSFWorkbook(); var worksheet = (XSSFSheet)workbook.CreateSheet("Test"); WorksheetProtector.ApplyCriteriaProtection(worksheet, "CriteriaPassword"); worksheet.IsSheetLocked.ShouldBeTrue(); } [Fact] public void UnlockExtensionArea_UnlocksSpecifiedRange() { using var workbook = new XSSFWorkbook(); var worksheet = (XSSFSheet)workbook.CreateSheet("Test"); WorksheetProtector.UnlockExtensionArea(worksheet, 10, 5, 100, 100); var extensionStyle = worksheet.GetColumnStyle(5); extensionStyle.IsLocked.ShouldBeFalse(); var extensionCell = ExcelTestHelpers.GetCell(worksheet, 1, 6)!; extensionCell.CellStyle.IsLocked.ShouldBeFalse(); } }