From 1afad11ae679e200b55dd3efcdf8a4d59d8158b2 Mon Sep 17 00:00:00 2001 From: Michael Staib Date: Sun, 31 May 2026 21:26:06 +0000 Subject: [PATCH 1/2] Add implicit conversion to PageConnection from Page --- .../Types.CursorPagination.Extensions/PageConnection.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/HotChocolate/Core/src/Types.CursorPagination.Extensions/PageConnection.cs b/src/HotChocolate/Core/src/Types.CursorPagination.Extensions/PageConnection.cs index 17b074eb0d2..5e0ac70b0be 100644 --- a/src/HotChocolate/Core/src/Types.CursorPagination.Extensions/PageConnection.cs +++ b/src/HotChocolate/Core/src/Types.CursorPagination.Extensions/PageConnection.cs @@ -77,4 +77,13 @@ public override IReadOnlyList>? Edges /// [GraphQLDescription("Identifies the total count of items in the connection.")] public int TotalCount => _page.TotalCount ?? -1; + + /// + /// Converts a to a . + /// + /// + /// The page to convert. + /// + public static implicit operator PageConnection(Page page) + => new(page); } From 03542d64d240c0c02ae52126491775e362604238 Mon Sep 17 00:00:00 2001 From: Michael Staib Date: Sun, 31 May 2026 21:58:44 +0000 Subject: [PATCH 2/2] Add tests --- .../PageConnectionTests.cs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/HotChocolate/Core/test/Types.CursorPagination.Tests/PageConnectionTests.cs diff --git a/src/HotChocolate/Core/test/Types.CursorPagination.Tests/PageConnectionTests.cs b/src/HotChocolate/Core/test/Types.CursorPagination.Tests/PageConnectionTests.cs new file mode 100644 index 00000000000..5c8beec915f --- /dev/null +++ b/src/HotChocolate/Core/test/Types.CursorPagination.Tests/PageConnectionTests.cs @@ -0,0 +1,40 @@ +using GreenDonut.Data; + +namespace HotChocolate.Types.Pagination; + +public class PageConnectionTests +{ + [Fact] + public void ImplicitConversion_Should_WrapPage_When_ConvertingPageToConnection() + { + // arrange + var page = Page.Create( + ["a", "b", "c"], + hasNextPage: true, + hasPreviousPage: false, + item => item, + totalCount: 10); + + // act + PageConnection connection = page; + + // assert + Assert.Same(page, connection.Nodes); + Assert.Equal(10, connection.TotalCount); + Assert.Equal(3, connection.Edges!.Count); + Assert.True(connection.PageInfo.HasNextPage); + } + + [Fact] + public void ImplicitConversion_Should_ThrowArgumentNullException_When_PageIsNull() + { + // arrange + Page? page = null; + + // act + PageConnection Convert() => page!; + + // assert + Assert.Throws(Convert); + } +}