using SharepointToolbox.Core.Helpers;
namespace SharepointToolbox.Tests.Helpers;
[Trait("Category", "Unit")]
public class SharePointPaginationHelperTests
{
[Fact]
public void BuildPagedViewXml_NullInput_ReturnsViewWithRowLimit()
{
var result = SharePointPaginationHelper.BuildPagedViewXml(null, 2000);
Assert.Equal("2000", result);
}
[Fact]
public void BuildPagedViewXml_EmptyString_ReturnsViewWithRowLimit()
{
var result = SharePointPaginationHelper.BuildPagedViewXml("", 2000);
Assert.Equal("2000", result);
}
[Fact]
public void BuildPagedViewXml_WhitespaceOnly_ReturnsViewWithRowLimit()
{
var result = SharePointPaginationHelper.BuildPagedViewXml(" ", 2000);
Assert.Equal("2000", result);
}
[Fact]
public void BuildPagedViewXml_ExistingRowLimit_Replaces()
{
var input = "100";
var result = SharePointPaginationHelper.BuildPagedViewXml(input, 2000);
Assert.Equal("2000", result);
}
[Fact]
public void BuildPagedViewXml_NoRowLimit_AppendsBeforeClosingView()
{
var input = "";
var result = SharePointPaginationHelper.BuildPagedViewXml(input, 2000);
Assert.Contains("2000", result);
Assert.EndsWith("", result);
// Ensure RowLimit is inserted before the closing
var rowLimitIndex = result.IndexOf("2000", StringComparison.Ordinal);
var closingViewIndex = result.LastIndexOf("", StringComparison.Ordinal);
Assert.True(rowLimitIndex < closingViewIndex, "RowLimit should appear before ");
}
}