update test

pull/16197/head
Rich Harris 5 months ago
parent 1dd383ea54
commit 7762f29260

@ -6,30 +6,53 @@ import { test } from '../../test';
let d; let d;
export default test({ export default test({
html: `<p>pending</p>`, html: `
<button>reset</button>
<button>hello</button>
<button>goodbye</button>
<p>pending</p>
`,
get props() { async test({ assert, target }) {
d = deferred(); const [reset, hello, goodbye] = target.querySelectorAll('button');
return { flushSync(() => hello.click());
promise: d.promise
};
},
async test({ assert, target, component }) {
d.resolve('hello');
await Promise.resolve(); await Promise.resolve();
await Promise.resolve(); await Promise.resolve();
await tick(); await tick();
flushSync(); flushSync();
assert.htmlEqual(target.innerHTML, '<h1>hello</h1>'); assert.htmlEqual(
target.innerHTML,
`
<button>reset</button>
<button>hello</button>
<button>goodbye</button>
<h1>hello</h1>
`
);
component.promise = (d = deferred()).promise; flushSync(() => reset.click());
await tick(); await tick();
assert.htmlEqual(target.innerHTML, '<h1>hello</h1>'); assert.htmlEqual(
target.innerHTML,
`
<button>reset</button>
<button>hello</button>
<button>goodbye</button>
<h1>hello</h1>
`
);
d.resolve('wheee'); flushSync(() => goodbye.click());
await tick(); await tick();
assert.htmlEqual(target.innerHTML, '<h1>wheee</h1>'); assert.htmlEqual(
target.innerHTML,
`
<button>reset</button>
<button>hello</button>
<button>goodbye</button>
<h1>goodbye</h1>
`
);
} }
}); });

@ -1,9 +1,13 @@
<script> <script>
let { promise } = $props(); let deferred = $state(Promise.withResolvers());
</script> </script>
<button onclick={() => deferred = Promise.withResolvers()}>reset</button>
<button onclick={() => deferred.resolve('hello')}>hello</button>
<button onclick={() => deferred.resolve('goodbye')}>goodbye</button>
<svelte:boundary> <svelte:boundary>
<h1>{await promise}</h1> <h1>{await deferred.promise}</h1>
{#snippet pending()} {#snippet pending()}
<p>pending</p> <p>pending</p>

Loading…
Cancel
Save