-
Notifications
You must be signed in to change notification settings - Fork 2k
/
resolve-test.js
125 lines (105 loc) · 2.68 KB
/
resolve-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// @flow strict
import { expect } from 'chai';
import { describe, it } from 'mocha';
import { GraphQLSchema } from '../../type/schema';
import { GraphQLObjectType } from '../../type/definition';
import { GraphQLInt, GraphQLString } from '../../type/scalars';
import { graphqlSync } from '../../graphql';
describe('Execute: resolve function', () => {
function testSchema(testField) {
return new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
test: testField,
},
}),
});
}
it('default function accesses properties', () => {
const schema = testSchema({ type: GraphQLString });
const source = {
test: 'testValue',
};
expect(graphqlSync(schema, '{ test }', source)).to.deep.equal({
data: {
test: 'testValue',
},
});
});
it('default function calls methods', () => {
const schema = testSchema({ type: GraphQLString });
const source = {
_secret: 'secretValue',
test() {
return this._secret;
},
};
expect(graphqlSync(schema, '{ test }', source)).to.deep.equal({
data: {
test: 'secretValue',
},
});
});
it('default function passes args and context', () => {
const schema = testSchema({
type: GraphQLInt,
args: {
addend1: { type: GraphQLInt },
},
});
class Adder {
_num: number;
constructor(num) {
this._num = num;
}
test({ addend1 }, context) {
return this._num + addend1 + context.addend2;
}
}
const source = new Adder(700);
expect(
graphqlSync(schema, '{ test(addend1: 80) }', source, { addend2: 9 }),
).to.deep.equal({
data: {
test: 789,
},
});
});
it('uses provided resolve function', () => {
const schema = testSchema({
type: GraphQLString,
args: {
aStr: { type: GraphQLString },
aInt: { type: GraphQLInt },
},
resolve(source, args) {
return JSON.stringify([source, args]);
},
});
expect(graphqlSync(schema, '{ test }')).to.deep.equal({
data: {
test: '[null,{}]',
},
});
expect(graphqlSync(schema, '{ test }', 'Source!')).to.deep.equal({
data: {
test: '["Source!",{}]',
},
});
expect(
graphqlSync(schema, '{ test(aStr: "String!") }', 'Source!'),
).to.deep.equal({
data: {
test: '["Source!",{"aStr":"String!"}]',
},
});
expect(
graphqlSync(schema, '{ test(aInt: -123, aStr: "String!") }', 'Source!'),
).to.deep.equal({
data: {
test: '["Source!",{"aStr":"String!","aInt":-123}]',
},
});
});
});