Skip to content

Commit 1ab3449

Browse files
glen-84michaelstaib
authored andcommitted
Fixed calculation of totalPages in CreateRelativeForwardCursors method (#8295)
1 parent b9ce458 commit 1ab3449

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/GreenDonut/src/GreenDonut.Data/Extensions/GreenDonutPageExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public static ImmutableArray<PageCursor> CreateRelativeForwardCursors<T>(this Pa
112112
return [];
113113
}
114114

115-
var totalPages = (page.TotalCount ?? 0) / (page.RequestedSize ?? 10);
115+
var totalPages = Math.Ceiling((double)(page.TotalCount ?? 0) / (page.RequestedSize ?? 10));
116116

117117
if (page.Index >= totalPages)
118118
{

src/GreenDonut/test/GreenDonut.Data.EntityFramework.Tests/RelativeCursorTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1222,6 +1222,23 @@ await ctx.Brands.Where(t => t.GroupId == 2).OrderBy(t => t.Name).ThenBy(t => t.I
12221222
await Assert.ThrowsAsync<ArgumentException>(Error);
12231223
}
12241224

1225+
[Fact]
1226+
public async Task RequestedSize_Not_Evenly_Divisible_By_TotalCount()
1227+
{
1228+
// Arrange
1229+
var connectionString = CreateConnectionString();
1230+
await SeedAsync(connectionString);
1231+
await using var context = new TestContext(connectionString);
1232+
var arguments = new PagingArguments(12) { EnableRelativeCursors = true };
1233+
1234+
// Act
1235+
var first = await context.Brands.OrderBy(t => t.Name).ThenBy(t => t.Id).ToPageAsync(arguments);
1236+
1237+
// Assert
1238+
Assert.Equal(20, first.TotalCount);
1239+
Assert.Single(first.CreateRelativeForwardCursors());
1240+
}
1241+
12251242
private static async Task SeedAsync(string connectionString)
12261243
{
12271244
await using var context = new TestContext(connectionString);

0 commit comments

Comments
 (0)