using Omika.Core.Contracts.Common; namespace Omika.Tests.Contracts; /// /// Tests du contrat de pagination : bornes, calcul du nombre total de pages et /// indicateurs de navigation. /// 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(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([], Page: 2, PageSize: 2, TotalCount: 4, TotalPages: 2); Assert.True(result.HasPreviousPage); Assert.False(result.HasNextPage); } }