Skip to content

Commit ee0ea6c

Browse files
committed
implement batching
1 parent 857b440 commit ee0ea6c

File tree

3 files changed

+121
-188
lines changed

3 files changed

+121
-188
lines changed

src/execution/__tests__/defer-test.ts

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,6 @@ describe('Execute: defer directive', () => {
306306
path: ['hero'],
307307
label: 'DeferNested',
308308
},
309-
],
310-
hasNext: true,
311-
},
312-
{
313-
incremental: [
314309
{
315310
data: {
316311
name: 'Luke',
@@ -597,25 +592,16 @@ describe('Execute: defer directive', () => {
597592
{
598593
incremental: [
599594
{
600-
data: {
601-
slowField: 'slow',
602-
friends: [{}, {}, {}],
603-
},
595+
data: { slowField: 'slow', friends: [{}, {}, {}] },
604596
path: ['hero'],
605597
},
606598
],
607599
hasNext: true,
608600
},
609-
{
610-
incremental: [{ data: { name: 'Han' }, path: ['hero', 'friends', 0] }],
611-
hasNext: true,
612-
},
613-
{
614-
incremental: [{ data: { name: 'Leia' }, path: ['hero', 'friends', 1] }],
615-
hasNext: true,
616-
},
617601
{
618602
incremental: [
603+
{ data: { name: 'Han' }, path: ['hero', 'friends', 0] },
604+
{ data: { name: 'Leia' }, path: ['hero', 'friends', 1] },
619605
{ data: { name: 'C-3PO' }, path: ['hero', 'friends', 2] },
620606
],
621607
hasNext: false,
@@ -660,16 +646,10 @@ describe('Execute: defer directive', () => {
660646
],
661647
hasNext: true,
662648
},
663-
{
664-
incremental: [{ data: { name: 'Han' }, path: ['hero', 'friends', 0] }],
665-
hasNext: true,
666-
},
667-
{
668-
incremental: [{ data: { name: 'Leia' }, path: ['hero', 'friends', 1] }],
669-
hasNext: true,
670-
},
671649
{
672650
incremental: [
651+
{ data: { name: 'Han' }, path: ['hero', 'friends', 0] },
652+
{ data: { name: 'Leia' }, path: ['hero', 'friends', 1] },
673653
{ data: { name: 'C-3PO' }, path: ['hero', 'friends', 2] },
674654
],
675655
hasNext: false,

src/execution/__tests__/stream-test.ts

Lines changed: 20 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,7 +1135,9 @@ describe('Execute: stream directive', () => {
11351135
hasNext: true,
11361136
});
11371137

1138-
const result2 = await iterator.next();
1138+
const result2Promise = iterator.next();
1139+
resolveIterableCompletion();
1140+
const result2 = await result2Promise;
11391141
expectJSON(result2).toDeepEqual({
11401142
value: {
11411143
incremental: [
@@ -1144,18 +1146,6 @@ describe('Execute: stream directive', () => {
11441146
path: ['friendList', 0],
11451147
label: 'DeferName',
11461148
},
1147-
],
1148-
hasNext: true,
1149-
},
1150-
done: false,
1151-
});
1152-
1153-
const result3Promise = iterator.next();
1154-
resolveIterableCompletion();
1155-
const result3 = await result3Promise;
1156-
expectJSON(result3).toDeepEqual({
1157-
value: {
1158-
incremental: [
11591149
{
11601150
items: [{ id: '2' }],
11611151
path: ['friendList', 1],
@@ -1166,10 +1156,11 @@ describe('Execute: stream directive', () => {
11661156
},
11671157
done: false,
11681158
});
1169-
const result4Promise = iterator.next();
1159+
1160+
const result3Promise = iterator.next();
11701161
resolveSlowField('Han');
1171-
const result4 = await result4Promise;
1172-
expectJSON(result4).toDeepEqual({
1162+
const result3 = await result3Promise;
1163+
expectJSON(result3).toDeepEqual({
11731164
value: {
11741165
incremental: [
11751166
{
@@ -1182,8 +1173,8 @@ describe('Execute: stream directive', () => {
11821173
},
11831174
done: false,
11841175
});
1185-
const result5 = await iterator.next();
1186-
expectJSON(result5).toDeepEqual({
1176+
const result4 = await iterator.next();
1177+
expectJSON(result4).toDeepEqual({
11871178
value: undefined,
11881179
done: true,
11891180
});
@@ -1230,7 +1221,9 @@ describe('Execute: stream directive', () => {
12301221
hasNext: true,
12311222
});
12321223

1233-
const result2 = await iterator.next();
1224+
const result2Promise = iterator.next();
1225+
resolveSlowField('Han');
1226+
const result2 = await result2Promise;
12341227
expectJSON(result2).toDeepEqual({
12351228
value: {
12361229
incremental: [
@@ -1239,18 +1232,6 @@ describe('Execute: stream directive', () => {
12391232
path: ['friendList', 0],
12401233
label: 'DeferName',
12411234
},
1242-
],
1243-
hasNext: true,
1244-
},
1245-
done: false,
1246-
});
1247-
1248-
const result3Promise = iterator.next();
1249-
resolveSlowField('Han');
1250-
const result3 = await result3Promise;
1251-
expectJSON(result3).toDeepEqual({
1252-
value: {
1253-
incremental: [
12541235
{
12551236
items: [{ id: '2' }],
12561237
path: ['friendList', 1],
@@ -1261,8 +1242,9 @@ describe('Execute: stream directive', () => {
12611242
},
12621243
done: false,
12631244
});
1264-
const result4 = await iterator.next();
1265-
expectJSON(result4).toDeepEqual({
1245+
1246+
const result3 = await iterator.next();
1247+
expectJSON(result3).toDeepEqual({
12661248
value: {
12671249
incremental: [
12681250
{
@@ -1275,16 +1257,16 @@ describe('Execute: stream directive', () => {
12751257
},
12761258
done: false,
12771259
});
1278-
const result5Promise = iterator.next();
1260+
const result4Promise = iterator.next();
12791261
resolveIterableCompletion();
1280-
const result5 = await result5Promise;
1281-
expectJSON(result5).toDeepEqual({
1262+
const result4 = await result4Promise;
1263+
expectJSON(result4).toDeepEqual({
12821264
value: { hasNext: false },
12831265
done: false,
12841266
});
12851267

1286-
const result6 = await iterator.next();
1287-
expectJSON(result6).toDeepEqual({
1268+
const result5 = await iterator.next();
1269+
expectJSON(result5).toDeepEqual({
12881270
value: undefined,
12891271
done: true,
12901272
});
@@ -1341,22 +1323,8 @@ describe('Execute: stream directive', () => {
13411323
});
13421324
const returnPromise = iterator.return();
13431325

1344-
// these results had started processing before return was called
13451326
const result2 = await iterator.next();
13461327
expectJSON(result2).toDeepEqual({
1347-
done: false,
1348-
value: {
1349-
incremental: [
1350-
{
1351-
data: { name: 'Luke' },
1352-
path: ['friendList', 0],
1353-
},
1354-
],
1355-
hasNext: true,
1356-
},
1357-
});
1358-
const result3 = await iterator.next();
1359-
expectJSON(result3).toDeepEqual({
13601328
done: true,
13611329
value: undefined,
13621330
});
@@ -1411,24 +1379,8 @@ describe('Execute: stream directive', () => {
14111379

14121380
const returnPromise = iterator.return();
14131381

1414-
// this result had started processing before return was called
14151382
const result2 = await iterator.next();
14161383
expectJSON(result2).toDeepEqual({
1417-
done: false,
1418-
value: {
1419-
incremental: [
1420-
{
1421-
items: [{ id: '2', name: 'Han' }],
1422-
path: ['friendList', 1],
1423-
},
1424-
],
1425-
hasNext: true,
1426-
},
1427-
});
1428-
1429-
// third result is not returned because async iterator has returned
1430-
const result3 = await iterator.next();
1431-
expectJSON(result3).toDeepEqual({
14321384
done: true,
14331385
value: undefined,
14341386
});
@@ -1486,24 +1438,8 @@ describe('Execute: stream directive', () => {
14861438

14871439
const throwPromise = iterator.throw(new Error('bad'));
14881440

1489-
// these results had started processing before return was called
14901441
const result2 = await iterator.next();
14911442
expectJSON(result2).toDeepEqual({
1492-
done: false,
1493-
value: {
1494-
incremental: [
1495-
{
1496-
data: { name: 'Luke' },
1497-
path: ['friendList', 0],
1498-
},
1499-
],
1500-
hasNext: true,
1501-
},
1502-
});
1503-
1504-
// this result is not returned because async iterator has returned
1505-
const result3 = await iterator.next();
1506-
expectJSON(result3).toDeepEqual({
15071443
done: true,
15081444
value: undefined,
15091445
});

0 commit comments

Comments
 (0)