Skip to content

Commit b388751

Browse files
committed
Add pagination test
1 parent f6635cc commit b388751

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed

spec/ParseGraphQLServer.spec.js

+152
Original file line numberDiff line numberDiff line change
@@ -4980,6 +4980,158 @@ describe('ParseGraphQLServer', () => {
49804980
).toEqual(['someValue14', 'someValue17']);
49814981
});
49824982

4983+
fit('should support pagination', async () => {
4984+
const numberArray = (first, last) => {
4985+
const array = [];
4986+
for (let i = first; i <= last; i++) {
4987+
array.push(i);
4988+
}
4989+
return array;
4990+
};
4991+
4992+
const promises = [];
4993+
for (let i = 0; i < 100; i++) {
4994+
const obj = new Parse.Object('SomeClass');
4995+
obj.set('numberField', i);
4996+
promises.push(obj.save());
4997+
}
4998+
await Promise.all(promises);
4999+
5000+
await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear();
5001+
5002+
const find = async ({ skip, after, first, before, last } = {}) => {
5003+
return await apolloClient.query({
5004+
query: gql`
5005+
query FindSomeObjects(
5006+
$order: [SomeClassOrder!]
5007+
$skip: Int
5008+
$after: String
5009+
$first: Int
5010+
$before: String
5011+
$last: Int
5012+
) {
5013+
someClasses(
5014+
order: $order
5015+
skip: $skip
5016+
after: $after
5017+
first: $first
5018+
before: $before
5019+
last: $last
5020+
) {
5021+
edges {
5022+
cursor
5023+
node {
5024+
numberField
5025+
}
5026+
}
5027+
count
5028+
pageInfo {
5029+
hasPreviousPage
5030+
startCursor
5031+
endCursor
5032+
hasNextPage
5033+
}
5034+
}
5035+
}
5036+
`,
5037+
variables: {
5038+
order: ['numberField_ASC'],
5039+
skip,
5040+
after,
5041+
first,
5042+
before,
5043+
last,
5044+
},
5045+
});
5046+
};
5047+
5048+
let result = await find();
5049+
expect(
5050+
result.data.someClasses.edges.map(edge => edge.node.numberField)
5051+
).toEqual(numberArray(0, 99));
5052+
expect(result.data.someClasses.count).toEqual(100);
5053+
expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual(
5054+
false
5055+
);
5056+
expect(result.data.someClasses.pageInfo.startCursor).toEqual(
5057+
result.data.someClasses.edges[0].cursor
5058+
);
5059+
expect(result.data.someClasses.pageInfo.endCursor).toEqual(
5060+
result.data.someClasses.edges[99].cursor
5061+
);
5062+
expect(result.data.someClasses.pageInfo.hasNextPage).toEqual(false);
5063+
5064+
result = await find({ first: 10 });
5065+
expect(
5066+
result.data.someClasses.edges.map(edge => edge.node.numberField)
5067+
).toEqual(numberArray(0, 9));
5068+
expect(result.data.someClasses.count).toEqual(100);
5069+
expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual(
5070+
false
5071+
);
5072+
expect(result.data.someClasses.pageInfo.startCursor).toEqual(
5073+
result.data.someClasses.edges[0].cursor
5074+
);
5075+
expect(result.data.someClasses.pageInfo.endCursor).toEqual(
5076+
result.data.someClasses.edges[9].cursor
5077+
);
5078+
expect(result.data.someClasses.pageInfo.hasNextPage).toEqual(true);
5079+
5080+
result = await find({
5081+
first: 10,
5082+
after: result.data.someClasses.pageInfo.endCursor,
5083+
});
5084+
expect(
5085+
result.data.someClasses.edges.map(edge => edge.node.numberField)
5086+
).toEqual(numberArray(10, 19));
5087+
expect(result.data.someClasses.count).toEqual(100);
5088+
expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual(
5089+
true
5090+
);
5091+
expect(result.data.someClasses.pageInfo.startCursor).toEqual(
5092+
result.data.someClasses.edges[0].cursor
5093+
);
5094+
expect(result.data.someClasses.pageInfo.endCursor).toEqual(
5095+
result.data.someClasses.edges[9].cursor
5096+
);
5097+
expect(result.data.someClasses.pageInfo.hasNextPage).toEqual(true);
5098+
5099+
result = await find({ last: 10 });
5100+
expect(
5101+
result.data.someClasses.edges.map(edge => edge.node.numberField)
5102+
).toEqual(numberArray(90, 99));
5103+
expect(result.data.someClasses.count).toEqual(100);
5104+
expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual(
5105+
true
5106+
);
5107+
expect(result.data.someClasses.pageInfo.startCursor).toEqual(
5108+
result.data.someClasses.edges[0].cursor
5109+
);
5110+
expect(result.data.someClasses.pageInfo.endCursor).toEqual(
5111+
result.data.someClasses.edges[9].cursor
5112+
);
5113+
expect(result.data.someClasses.pageInfo.hasNextPage).toEqual(false);
5114+
5115+
result = await find({
5116+
last: 10,
5117+
before: result.data.someClasses.pageInfo.startCursor,
5118+
});
5119+
expect(
5120+
result.data.someClasses.edges.map(edge => edge.node.numberField)
5121+
).toEqual(numberArray(80, 89));
5122+
expect(result.data.someClasses.count).toEqual(100);
5123+
expect(result.data.someClasses.pageInfo.hasPreviousPage).toEqual(
5124+
true
5125+
);
5126+
expect(result.data.someClasses.pageInfo.startCursor).toEqual(
5127+
result.data.someClasses.edges[0].cursor
5128+
);
5129+
expect(result.data.someClasses.pageInfo.endCursor).toEqual(
5130+
result.data.someClasses.edges[9].cursor
5131+
);
5132+
expect(result.data.someClasses.pageInfo.hasNextPage).toEqual(true);
5133+
});
5134+
49835135
it('should support count', async () => {
49845136
await prepareData();
49855137

0 commit comments

Comments
 (0)