Migrate ExcelIO from ClosedXML to NPOI
This commit is contained in:
@@ -1,80 +1,78 @@
|
||||
using ClosedXML.Excel;
|
||||
using JdeScoping.ExcelIO.Formatting;
|
||||
using Shouldly;
|
||||
using Xunit;
|
||||
|
||||
namespace JdeScoping.ExcelIO.Tests;
|
||||
|
||||
public class WorksheetProtectorTests
|
||||
{
|
||||
[Fact]
|
||||
public void ApplyProtection_ProtectsWorksheet()
|
||||
{
|
||||
using var workbook = new XLWorkbook();
|
||||
var worksheet = workbook.Worksheets.Add("Test");
|
||||
|
||||
WorksheetProtector.ApplyProtection(worksheet, "TestPassword");
|
||||
|
||||
worksheet.Protection.IsProtected.ShouldBeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyProtection_AllowsSpecifiedOperations()
|
||||
{
|
||||
using var workbook = new XLWorkbook();
|
||||
var worksheet = workbook.Worksheets.Add("Test");
|
||||
|
||||
WorksheetProtector.ApplyProtection(worksheet, "TestPassword");
|
||||
|
||||
// Check that specified operations are allowed
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteColumns).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteRows).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.AutoFilter).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatCells).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatColumns).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatRows).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.SelectLockedCells).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.SelectUnlockedCells).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.EditObjects).ShouldBeTrue();
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.Sort).ShouldBeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyProtection_AllowsDeleteRows()
|
||||
{
|
||||
using var workbook = new XLWorkbook();
|
||||
var worksheet = workbook.Worksheets.Add("Test");
|
||||
|
||||
WorksheetProtector.ApplyProtection(worksheet, "TestPassword");
|
||||
|
||||
// DeleteRows should be allowed
|
||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteRows).ShouldBeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyCriteriaProtection_ProtectsWorksheet()
|
||||
{
|
||||
using var workbook = new XLWorkbook();
|
||||
var worksheet = workbook.Worksheets.Add("Test");
|
||||
|
||||
WorksheetProtector.ApplyCriteriaProtection(worksheet, "CriteriaPassword");
|
||||
|
||||
worksheet.Protection.IsProtected.ShouldBeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UnlockExtensionArea_UnlocksSpecifiedRange()
|
||||
{
|
||||
using var workbook = new XLWorkbook();
|
||||
var worksheet = workbook.Worksheets.Add("Test");
|
||||
|
||||
// First, set some cells to locked (default)
|
||||
worksheet.Range(1, 1, 10, 5).Style.Protection.Locked = true;
|
||||
|
||||
WorksheetProtector.UnlockExtensionArea(worksheet, 10, 5, 100, 100);
|
||||
|
||||
// Extension area should be unlocked
|
||||
var extensionCell = worksheet.Cell(1, 6);
|
||||
extensionCell.Style.Protection.Locked.ShouldBeFalse();
|
||||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user