fix(graphql): nextPage and prevPage are non nullable even though they can be null sometimes (#12201)
This PR introduced https://github.com/payloadcms/payload/pull/11952 improvement for graphql schema with making fields of the `Paginated<T>` interface non-nullable. However, there are a few special ones - `nextPage` and `prevPage`. They can be `null` when: The result returned 0 docs. The result returned `x` docs, but in the DB we don't have `x+1` doc. Thus, `nextPage` will be `null`. The result will have `nextPage: null`. Finally, when we query 1st page, `prevPage` is `null` as well. <img width="873" alt="image" src="https://github.com/user-attachments/assets/04d04b13-ac26-4fc1-b421-b5f86efc9b65" />
This commit is contained in:
@@ -104,5 +104,50 @@ describe('graphql', () => {
|
||||
|
||||
expect(res.hyphenated_name).toStrictEqual('example-hyphenated-name')
|
||||
})
|
||||
|
||||
it('should not error because of non nullable fields', async () => {
|
||||
await payload.delete({ collection: 'posts', where: {} })
|
||||
|
||||
// this is an array if any errors
|
||||
const res_1 = await restClient
|
||||
.GRAPHQL_POST({
|
||||
body: JSON.stringify({
|
||||
query: `
|
||||
query {
|
||||
Posts {
|
||||
docs {
|
||||
title
|
||||
}
|
||||
prevPage
|
||||
}
|
||||
}
|
||||
`,
|
||||
}),
|
||||
})
|
||||
.then((res) => res.json())
|
||||
expect(res_1.errors).toBeFalsy()
|
||||
|
||||
await payload.create({
|
||||
collection: 'posts',
|
||||
data: { title: 'any-title' },
|
||||
})
|
||||
|
||||
const res_2 = await restClient
|
||||
.GRAPHQL_POST({
|
||||
body: JSON.stringify({
|
||||
query: `
|
||||
query {
|
||||
Posts(limit: 1) {
|
||||
docs {
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
`,
|
||||
}),
|
||||
})
|
||||
.then((res) => res.json())
|
||||
expect(res_2.errors).toBeFalsy()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user