Skip to content

Commit 4f26a6b

Browse files
Add 'resolveOnNextTick' to use in tests (#2778)
instead of Node.js specific methods
1 parent fbe8402 commit 4f26a6b

File tree

5 files changed

+38
-18
lines changed

5 files changed

+38
-18
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { expect } from 'chai';
2+
import { describe, it } from 'mocha';
3+
4+
import resolveOnNextTick from '../resolveOnNextTick';
5+
6+
describe('resolveOnNextTick', () => {
7+
it('resolves promise on the next tick', async () => {
8+
const output = [];
9+
10+
const promise1 = resolveOnNextTick().then(() => {
11+
output.push('second');
12+
});
13+
const promise2 = resolveOnNextTick().then(() => {
14+
output.push('third');
15+
});
16+
output.push('first');
17+
18+
await Promise.all([promise1, promise2]);
19+
expect(output).to.deep.equal(['first', 'second', 'third']);
20+
});
21+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function resolveOnNextTick(): Promise<void> {
2+
return Promise.resolve(undefined);
3+
}

src/execution/__tests__/executor-test.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,7 @@ describe('Execute: Handles basic execution tasks', () => {
115115
};
116116

117117
function promiseData() {
118-
return new Promise((resolve) => {
119-
process.nextTick(() => {
120-
resolve(data);
121-
});
122-
});
118+
return Promise.resolve(data);
123119
}
124120

125121
const DataType = new GraphQLObjectType({

src/execution/__tests__/mutations-test.js

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { expect } from 'chai';
22
import { describe, it } from 'mocha';
33

4+
import resolveOnNextTick from '../../__testUtils__/resolveOnNextTick';
5+
46
import { parse } from '../../language/parser';
57

68
import { GraphQLInt } from '../../type/scalars';
@@ -29,24 +31,18 @@ class Root {
2931
return this.numberHolder;
3032
}
3133

32-
promiseToChangeTheNumber(newNumber: number): Promise<NumberHolder> {
33-
return new Promise((resolve) => {
34-
process.nextTick(() => {
35-
resolve(this.immediatelyChangeTheNumber(newNumber));
36-
});
37-
});
34+
async promiseToChangeTheNumber(newNumber: number): Promise<NumberHolder> {
35+
await resolveOnNextTick();
36+
return this.immediatelyChangeTheNumber(newNumber);
3837
}
3938

4039
failToChangeTheNumber(): NumberHolder {
4140
throw new Error('Cannot change the number');
4241
}
4342

44-
promiseAndFailToChangeTheNumber(): Promise<NumberHolder> {
45-
return new Promise((_resolve, reject) => {
46-
process.nextTick(() => {
47-
reject(new Error('Cannot change the number'));
48-
});
49-
});
43+
async promiseAndFailToChangeTheNumber(): Promise<NumberHolder> {
44+
await resolveOnNextTick();
45+
throw new Error('Cannot change the number');
5046
}
5147
}
5248

src/subscription/__tests__/subscribe-test.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import EventEmitter from 'events';
33
import { expect } from 'chai';
44
import { describe, it } from 'mocha';
55

6+
import resolveOnNextTick from '../../__testUtils__/resolveOnNextTick';
7+
68
import type { DocumentNode } from '../../language/ast';
79
import { parse } from '../../language/parser';
810

@@ -244,7 +246,7 @@ describe('Subscription Initialization Phase', () => {
244246
importantEmail: {
245247
type: GraphQLString,
246248
subscribe: async () => {
247-
await new Promise(setImmediate);
249+
await resolveOnNextTick();
248250
return eventEmitterAsyncIterator(pubsub, 'importantEmail');
249251
},
250252
},
@@ -262,6 +264,8 @@ describe('Subscription Initialization Phase', () => {
262264
`),
263265
});
264266

267+
expect(subscription).to.have.property('next');
268+
265269
pubsub.emit('importantEmail', {
266270
importantEmail: {},
267271
});

0 commit comments

Comments
 (0)