56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using Omika.Core.Contracts.Common;
|
|
|
|
namespace Omika.Tests.Contracts;
|
|
|
|
/// <summary>
|
|
/// Tests du contrat de pagination : bornes, calcul du nombre total de pages et
|
|
/// indicateurs de navigation.
|
|
/// </summary>
|
|
public class PagedResultTests
|
|
{
|
|
[Fact]
|
|
public void PagedRequest_NormalizesPage_ToAtLeastOne()
|
|
{
|
|
var request = new PagedRequest { Page = 0, PageSize = 10 };
|
|
|
|
Assert.Equal(1, request.Page);
|
|
}
|
|
|
|
[Fact]
|
|
public void PagedRequest_ClampsPageSize()
|
|
{
|
|
var request = new PagedRequest { PageSize = PagedRequest.MaxPageSize + 1 };
|
|
|
|
Assert.Equal(PagedRequest.MaxPageSize, request.PageSize);
|
|
}
|
|
|
|
[Fact]
|
|
public void PagedRequest_ZeroPageSize_FallsBackToDefault()
|
|
{
|
|
var request = new PagedRequest { PageSize = 0 };
|
|
|
|
Assert.Equal(20, request.PageSize);
|
|
}
|
|
|
|
[Fact]
|
|
public void PagedResult_ComputesTotalPages_AndNavigation()
|
|
{
|
|
var items = new[] { "a", "b", "c", "d", "e" };
|
|
var result = new PagedResult<string>(items, Page: 1, PageSize: 2, TotalCount: 5, TotalPages: 3);
|
|
|
|
Assert.Equal(5, result.TotalCount);
|
|
Assert.Equal(3, result.TotalPages);
|
|
Assert.False(result.HasPreviousPage);
|
|
Assert.True(result.HasNextPage);
|
|
}
|
|
|
|
[Fact]
|
|
public void PagedResult_LastPage_HasNoNextPage()
|
|
{
|
|
var result = new PagedResult<string>([], Page: 2, PageSize: 2, TotalCount: 4, TotalPages: 2);
|
|
|
|
Assert.True(result.HasPreviousPage);
|
|
Assert.False(result.HasNextPage);
|
|
}
|
|
}
|