Skip to content

Commit 461a33f

Browse files
committed
fix: hasPreviousPage check if present only after arg
1 parent 9de6600 commit 461a33f

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

src/__tests__/connectionResolver-test.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,11 @@ describe('connectionResolver', () => {
357357

358358
describe('"Relay Cursor Connections Specification (PageInfo)":', () => {
359359
describe('HasPreviousPage', () => {
360-
it('If last was not set, return false.', () => {
361-
expect(preparePageInfo(fiveEdges, {}, 5, 2).hasPreviousPage).toBe(false);
360+
it('If last was not set (but first is present), return false.', () => {
361+
expect(preparePageInfo(fiveEdges, { first: 2 }, 5, 2).hasPreviousPage).toBe(false);
362+
});
363+
it('If last was not set (and first is empty), return true.', () => {
364+
expect(preparePageInfo(fiveEdges, {}, 5, 2).hasPreviousPage).toBe(true);
362365
});
363366
it('If edges contains more than last elements, return true.', () => {
364367
expect(preparePageInfo(fiveEdges, { last: 3 }, 3, 2).hasPreviousPage).toBe(true);
@@ -811,4 +814,26 @@ describe('connectionResolver', () => {
811814
expect(result.edges[1].node.id).toBe(2);
812815
});
813816
});
817+
818+
describe('default `first` argument if first/last are empty', () => {
819+
const defaultResolver = prepareConnectionResolver(userTypeComposer, {
820+
countResolverName: 'count',
821+
findResolverName: 'findMany',
822+
sort: sortOptions,
823+
defaultLimit: 5,
824+
});
825+
826+
it('should use defaultLimit option', async () => {
827+
const data = await defaultResolver.resolve({ args: {} });
828+
expect(data.edges.length).toBe(5);
829+
expect(data.pageInfo.hasNextPage).toBe(true);
830+
});
831+
832+
it('should use defaultLimit option with after option', async () => {
833+
const data = await defaultResolver.resolve({ args: { after: 'NA==' } });
834+
expect(data.edges.length).toBe(5);
835+
expect(data.pageInfo.hasNextPage).toBe(true);
836+
expect(data.pageInfo.hasPreviousPage).toBe(true);
837+
});
838+
});
814839
});

src/connectionResolver.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ export function preparePageInfo(
302302
} else {
303303
pageInfo.endCursor = edges[edges.length - 1].cursor;
304304
}
305-
pageInfo.hasPreviousPage = !!args.last && skip > 0;
305+
pageInfo.hasPreviousPage = (!!args.last || !args.first) && skip > 0;
306306
pageInfo.hasNextPage = (!!args.first || !args.last) && hasExtraRecords;
307307
}
308308

0 commit comments

Comments
 (0)