Files
2026-10-23 18:46:50 +02:00

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);
}
}