Skip to content

Commit d9e615e

Browse files
committed
fix: useResource tests
1 parent 6542030 commit d9e615e

File tree

7 files changed

+73
-50
lines changed

7 files changed

+73
-50
lines changed

packages/docs/src/routes/api/qwik-testing/api.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@
209209
}
210210
],
211211
"kind": "Function",
212-
"content": "Trigger an event in unit tests on an element.\n\nFuture deprecation candidate.\n\n\n```typescript\nexport declare function trigger(root: Element, queryOrElement: string | Element | keyof HTMLElementTagNameMap | null, eventName: string, eventPayload?: any): Promise<void>;\n```\n\n\n<table><thead><tr><th>\n\nParameter\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\nroot\n\n\n</td><td>\n\nElement\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\nqueryOrElement\n\n\n</td><td>\n\nstring \\| Element \\| keyof HTMLElementTagNameMap \\| null\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\neventName\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\neventPayload\n\n\n</td><td>\n\nany\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n</tbody></table>\n\n**Returns:**\n\nPromise&lt;void&gt;",
212+
"content": "Trigger an event in unit tests on an element.\n\nFuture deprecation candidate.\n\n\n```typescript\nexport declare function trigger(root: Element, queryOrElement: string | Element | keyof HTMLElementTagNameMap | null, eventName: string, eventPayload?: any, options?: {\n waitForIdle?: boolean;\n}): Promise<void>;\n```\n\n\n<table><thead><tr><th>\n\nParameter\n\n\n</th><th>\n\nType\n\n\n</th><th>\n\nDescription\n\n\n</th></tr></thead>\n<tbody><tr><td>\n\nroot\n\n\n</td><td>\n\nElement\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\nqueryOrElement\n\n\n</td><td>\n\nstring \\| Element \\| keyof HTMLElementTagNameMap \\| null\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\neventName\n\n\n</td><td>\n\nstring\n\n\n</td><td>\n\n\n</td></tr>\n<tr><td>\n\neventPayload\n\n\n</td><td>\n\nany\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n<tr><td>\n\noptions\n\n\n</td><td>\n\n{ waitForIdle?: boolean; }\n\n\n</td><td>\n\n_(Optional)_\n\n\n</td></tr>\n</tbody></table>\n\n**Returns:**\n\nPromise&lt;void&gt;",
213213
"editUrl": "https://github.com/QwikDev/qwik/tree/main/packages/qwik/src/testing/element-fixture.ts",
214214
"mdFile": "core.trigger.md"
215215
},

packages/docs/src/routes/api/qwik-testing/index.mdx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,9 @@ export declare function trigger(
507507
queryOrElement: string | Element | keyof HTMLElementTagNameMap | null,
508508
eventName: string,
509509
eventPayload?: any,
510+
options?: {
511+
waitForIdle?: boolean;
512+
},
510513
): Promise<void>;
511514
```
512515

@@ -568,6 +571,19 @@ any
568571

569572
_(Optional)_
570573

574+
</td></tr>
575+
<tr><td>
576+
577+
options
578+
579+
</td><td>
580+
581+
\{ waitForIdle?: boolean; }
582+
583+
</td><td>
584+
585+
_(Optional)_
586+
571587
</td></tr>
572588
</tbody></table>
573589

packages/qwik/src/core/tests/use-resource.spec.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ import {
1111
useStore,
1212
type ResourceReturn,
1313
} from '@qwik.dev/core';
14-
import { domRender, getTestPlatform, ssrRenderToDom, trigger } from '@qwik.dev/core/testing';
14+
import { domRender, ssrRenderToDom, trigger } from '@qwik.dev/core/testing';
1515
import { describe, expect, it } from 'vitest';
16+
import { ChoreType } from '../shared/util-chore-type';
1617

1718
const debug = false; //true;
1819
Error.stackTraceLimit = 100;
@@ -21,8 +22,7 @@ export function mutable(value: any) {
2122
return value;
2223
}
2324

24-
// TODO: for now
25-
describe.skip.each([
25+
describe.each([
2626
{ render: ssrRenderToDom }, //
2727
{ render: domRender }, //
2828
])('$render.name: useResource', ({ render }) => {
@@ -127,7 +127,7 @@ describe.skip.each([
127127
</Component>
128128
);
129129

130-
await trigger(container.element, 'button', 'click');
130+
await trigger(container.element, 'button', 'click', {}, { waitForIdle: false });
131131
expect(vNode).toMatchVDOM(
132132
<Component ssr-required>
133133
<button>
@@ -140,7 +140,7 @@ describe.skip.each([
140140
</Component>
141141
);
142142
await (global as any).delay.resolve();
143-
await getTestPlatform().flush();
143+
await container.$scheduler$.schedule(ChoreType.WAIT_FOR_QUEUE).$returnValue$;
144144

145145
expect(vNode).toMatchVDOM(
146146
<Component ssr-required>
@@ -196,7 +196,7 @@ describe.skip.each([
196196
</Fragment>
197197
</Component>
198198
);
199-
await trigger(container.element, 'button', 'click');
199+
await trigger(container.element, 'button', 'click', {}, { waitForIdle: false });
200200

201201
expect(vNode).toMatchVDOM(
202202
<Component ssr-required>
@@ -215,7 +215,7 @@ describe.skip.each([
215215
</Component>
216216
);
217217
await (global as any).delay.resolve();
218-
await getTestPlatform().flush();
218+
await container.$scheduler$.schedule(ChoreType.WAIT_FOR_QUEUE).$returnValue$;
219219

220220
expect(vNode).toMatchVDOM(
221221
<Component ssr-required>
@@ -276,10 +276,10 @@ describe.skip.each([
276276
</Component>
277277
);
278278
// double click
279-
await trigger(container.element, 'button', 'click');
280-
await trigger(container.element, 'button', 'click');
279+
await trigger(container.element, 'button', 'click', {}, { waitForIdle: false });
280+
await trigger(container.element, 'button', 'click', {}, { waitForIdle: false });
281281
await (global as any).delay.resolve();
282-
await getTestPlatform().flush();
282+
await container.$scheduler$.schedule(ChoreType.WAIT_FOR_QUEUE).$returnValue$;
283283

284284
expect(vNode).toMatchVDOM(
285285
<Component ssr-required>

packages/qwik/src/testing/element-fixture.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ export async function trigger(
8484
root: Element,
8585
queryOrElement: string | Element | keyof HTMLElementTagNameMap | null,
8686
eventName: string,
87-
eventPayload: any = {}
87+
eventPayload: any = {},
88+
options?: { waitForIdle?: boolean }
8889
): Promise<void> {
90+
const waitForIdle = options?.waitForIdle ?? true;
8991
const elements =
9092
typeof queryOrElement === 'string'
9193
? Array.from(root.querySelectorAll(queryOrElement))
@@ -119,7 +121,7 @@ export async function trigger(
119121
}
120122
const waitForQueueChore = container?.$scheduler$.schedule(ChoreType.WAIT_FOR_QUEUE);
121123
await getTestPlatform().flush();
122-
if (waitForQueueChore) {
124+
if (waitForIdle && waitForQueueChore) {
123125
await waitForQueueChore.$returnValue$;
124126
}
125127
}

packages/qwik/src/testing/qwik.testing.api.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ export function ssrRenderToDom(jsx: JSXOutput, opts?: {
8585
}>;
8686

8787
// @public
88-
export function trigger(root: Element, queryOrElement: string | Element | keyof HTMLElementTagNameMap | null, eventName: string, eventPayload?: any): Promise<void>;
88+
export function trigger(root: Element, queryOrElement: string | Element | keyof HTMLElementTagNameMap | null, eventName: string, eventPayload?: any, options?: {
89+
waitForIdle?: boolean;
90+
}): Promise<void>;
8991

9092
// @public (undocumented)
9193
export function vnode_fromJSX(jsx: JSXOutput): {

starters/apps/e2e/src/components/signals/signals.tsx

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ import {
22
Resource,
33
Slot,
44
component$,
5+
createComputed$,
6+
createSignal,
57
isBrowser,
68
useComputed$,
9+
useConstant,
710
useResource$,
811
useSignal,
912
useStore,
@@ -135,7 +138,7 @@ export const SignalsChildren = component$(() => {
135138
<Issue4228 />
136139
<Issue4368 />
137140
<Issue4868 />
138-
{/* <ManySignals /> */}
141+
<ManySignals />
139142
</div>
140143
);
141144
});
@@ -1241,37 +1244,37 @@ export const Issue4868Card = component$((props: { src: string }) => {
12411244
);
12421245
});
12431246

1244-
// export const ManySignals = component$(() => {
1245-
// const signals = useConstant(() => {
1246-
// const arr: (Signal<number> | string)[] = [];
1247-
// for (let i = 0; i < 10; i++) {
1248-
// arr.push(createSignal(0));
1249-
// arr.push(", ");
1250-
// }
1251-
// return arr;
1252-
// });
1253-
// // const doubles = useConstant(() =>
1254-
// // signals.map((s: Signal<number> | string) =>
1255-
// // typeof s === "string" ? s : createComputed$(() => s.value * 2),
1256-
// // ),
1257-
// // );
1258-
1259-
// return (
1260-
// <>
1261-
// <button
1262-
// id="many-signals-button"
1263-
// onClick$={() => {
1264-
// for (const s of signals) {
1265-
// if (typeof s !== "string") {
1266-
// s.value++;
1267-
// }
1268-
// }
1269-
// }}
1270-
// >
1271-
// Increment
1272-
// </button>
1273-
// <div id="many-signals-result">{signals}</div>
1274-
// {/* <div id="many-doubles-result">{doubles}</div> */}
1275-
// </>
1276-
// );
1277-
// });
1247+
export const ManySignals = component$(() => {
1248+
const signals = useConstant(() => {
1249+
const arr: (Signal<number> | string)[] = [];
1250+
for (let i = 0; i < 10; i++) {
1251+
arr.push(createSignal(0));
1252+
arr.push(", ");
1253+
}
1254+
return arr;
1255+
});
1256+
const doubles = useConstant(() =>
1257+
signals.map((s: Signal<number> | string) =>
1258+
typeof s === "string" ? s : createComputed$(() => s.value * 2),
1259+
),
1260+
);
1261+
1262+
return (
1263+
<>
1264+
<button
1265+
id="many-signals-button"
1266+
onClick$={() => {
1267+
for (const s of signals) {
1268+
if (typeof s !== "string") {
1269+
s.value++;
1270+
}
1271+
}
1272+
}}
1273+
>
1274+
Increment
1275+
</button>
1276+
<div id="many-signals-result">{signals}</div>
1277+
<div id="many-doubles-result">{doubles}</div>
1278+
</>
1279+
);
1280+
});

starters/e2e/e2e.signals.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ test.describe("signals", () => {
559559
);
560560
});
561561

562-
test.skip("createSignal/createComputed$", async ({ page }) => {
562+
test.only("createSignal/createComputed$", async ({ page }) => {
563563
const button = page.locator("#many-signals-button");
564564
const result = page.locator("#many-signals-result");
565565
// TODO createComputed$

0 commit comments

Comments
 (0)