Skip to content

Commit 926c518

Browse files
committed
fix: test platform flushing
1 parent 7726a3a commit 926c518

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

packages/qwik/src/testing/platform.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,20 @@ function createPlatform() {
1111
}
1212

1313
let render: Queue<any> | null = null;
14+
let resolveNextTickImmediate = false;
1415

1516
const moduleCache = new Map<string, { [symbol: string]: any }>();
17+
const flushNextTick = async () => {
18+
await Promise.resolve();
19+
if (render) {
20+
try {
21+
render.resolve(await render.fn());
22+
} catch (e) {
23+
render.reject(e);
24+
}
25+
render = null;
26+
}
27+
};
1628
const testPlatform: TestPlatform = {
1729
isServer: false,
1830
importSymbol(containerEl, url, symbolName) {
@@ -39,7 +51,7 @@ function createPlatform() {
3951
return mod[symbolName];
4052
});
4153
},
42-
nextTick: (renderMarked) => {
54+
nextTick: async (renderMarked) => {
4355
if (!render) {
4456
render = {
4557
fn: renderMarked,
@@ -51,6 +63,10 @@ function createPlatform() {
5163
render!.resolve = resolve;
5264
render!.reject = reject;
5365
});
66+
if (resolveNextTickImmediate) {
67+
resolveNextTickImmediate = false;
68+
await flushNextTick();
69+
}
5470
} else if (renderMarked !== render.fn) {
5571
// TODO(misko): proper error and test
5672
throw new Error(
@@ -69,14 +85,9 @@ function createPlatform() {
6985
});
7086
},
7187
flush: async () => {
72-
await Promise.resolve();
73-
if (render) {
74-
try {
75-
render.resolve(await render.fn());
76-
} catch (e) {
77-
render.reject(e);
78-
}
79-
render = null;
88+
await flushNextTick();
89+
if (!render) {
90+
resolveNextTickImmediate = true;
8091
}
8192
},
8293
chunkForSymbol() {

0 commit comments

Comments
 (0)