1
1
import { makeExecutableSchema } from '@graphql-tools/schema'
2
2
import { wrapSchema } from '@graphql-tools/wrap'
3
- import { execute , graphql , parse } from 'graphql'
3
+ import { execute , ExecutionResult , parse } from 'graphql'
4
4
import AutoPaginationTransform from '../src'
5
5
6
6
describe ( 'Auto Pagination' , ( ) => {
@@ -9,12 +9,19 @@ describe('Auto Pagination', () => {
9
9
const schema = makeExecutableSchema ( {
10
10
typeDefs : /* GraphQL */ `
11
11
type Query {
12
+ _meta: Meta
12
13
users(first: Int = ${ LIMIT } , skip: Int = 0): [User!]!
13
14
}
14
15
type User {
15
16
id: ID!
16
17
name: String!
17
18
}
19
+ type Meta {
20
+ block: Block
21
+ }
22
+ type Block {
23
+ number: Int
24
+ }
18
25
` ,
19
26
resolvers : {
20
27
Query : {
@@ -24,6 +31,11 @@ describe('Auto Pagination', () => {
24
31
}
25
32
return users . slice ( skip , skip + first )
26
33
} ,
34
+ _meta : ( ) => ( {
35
+ block : {
36
+ number : Date . now ( ) ,
37
+ } ,
38
+ } ) ,
27
39
} ,
28
40
} ,
29
41
} )
@@ -85,4 +97,26 @@ describe('Auto Pagination', () => {
85
97
expect ( result . data ?. users ) . toHaveLength ( 2 )
86
98
expect ( result . data ?. users ) . toEqual ( users . slice ( 2 , 4 ) )
87
99
} )
100
+ it ( 'should ignore non entity fields added by other transforms' , async ( ) => {
101
+ const query = /* GraphQL */ `
102
+ query {
103
+ _meta {
104
+ block {
105
+ number
106
+ }
107
+ }
108
+ users(first: 10) {
109
+ id
110
+ name
111
+ }
112
+ }
113
+ `
114
+ const result : ExecutionResult < any > = await execute ( {
115
+ schema : wrappedSchema ,
116
+ document : parse ( query ) ,
117
+ } )
118
+ expect ( result . data ?. _meta ?. block ?. number ) . toBeDefined ( )
119
+ expect ( result . data ?. users ) . toHaveLength ( 10 )
120
+ expect ( result . data ?. users ) . toEqual ( users . slice ( 0 , 10 ) )
121
+ } )
88
122
} )
0 commit comments