Skip to content

Commit 0a8e476

Browse files
committed
add additional test
1 parent 8cd9da3 commit 0a8e476

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

src/transform/__tests__/stream-test.ts

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2026,6 +2026,81 @@ describe('Execute: legacy stream directive', () => {
20262026
},
20272027
]);
20282028
});
2029+
it('Handles overlapping deferred and non-deferred streams with a non-zero initial count with a slow defer', async () => {
2030+
const document = parse(`
2031+
query {
2032+
nestedObject {
2033+
nestedFriendList @stream(initialCount: 1) {
2034+
id
2035+
}
2036+
}
2037+
nestedObject {
2038+
... @defer {
2039+
nestedFriendList @stream(initialCount: 1) {
2040+
id
2041+
name
2042+
}
2043+
}
2044+
}
2045+
}
2046+
`);
2047+
const result = await complete(document, {
2048+
nestedObject: {
2049+
async *nestedFriendList() {
2050+
yield await Promise.resolve({
2051+
...friends[0],
2052+
name: Promise.resolve(friends[0].name),
2053+
});
2054+
yield await Promise.resolve(friends[1]);
2055+
yield await Promise.resolve(friends[2]);
2056+
},
2057+
},
2058+
});
2059+
expectJSON(result).toDeepEqual([
2060+
{
2061+
data: {
2062+
nestedObject: {
2063+
nestedFriendList: [{ id: '1' }],
2064+
},
2065+
},
2066+
hasNext: true,
2067+
},
2068+
{
2069+
incremental: [
2070+
{
2071+
items: [{ id: '2' }],
2072+
path: ['nestedObject', 'nestedFriendList', 1],
2073+
},
2074+
{
2075+
data: {
2076+
nestedFriendList: [
2077+
{ id: '1', name: 'Luke' },
2078+
{ id: '2', name: 'Han' },
2079+
],
2080+
},
2081+
path: ['nestedObject'],
2082+
},
2083+
],
2084+
hasNext: true,
2085+
},
2086+
{
2087+
incremental: [
2088+
{
2089+
items: [{ id: '3' }],
2090+
path: ['nestedObject', 'nestedFriendList', 2],
2091+
},
2092+
{
2093+
items: [{ id: '3', name: 'Leia' }],
2094+
path: ['nestedObject', 'nestedFriendList', 2],
2095+
},
2096+
],
2097+
hasNext: true,
2098+
},
2099+
{
2100+
hasNext: false,
2101+
},
2102+
]);
2103+
});
20292104
it('Returns payloads in correct order when parent deferred fragment resolves slower than stream', async () => {
20302105
const { promise: slowFieldPromise, resolve: resolveSlowField } =
20312106
promiseWithResolvers();

0 commit comments

Comments
 (0)