|
1 | 1 | import { flushSync, tick } from 'svelte'; |
2 | | -import { deferred } from '../../../../src/internal/shared/utils.js'; |
3 | | -import { test } from '../../test'; |
4 | | - |
5 | | -/** @type {ReturnType<typeof deferred>} */ |
6 | | -let d; |
| 2 | +import { ok, test } from '../../test'; |
7 | 3 |
|
8 | 4 | export default test({ |
9 | | - html: `<p>pending</p>`, |
10 | | - |
11 | | - get props() { |
12 | | - d = deferred(); |
| 5 | + html: ` |
| 6 | + <button>resolve a</button> |
| 7 | + <button>resolve b</button> |
| 8 | + <button>reset</button> |
| 9 | + <button>increment</button> |
| 10 | + <p>pending</p> |
| 11 | + `, |
13 | 12 |
|
14 | | - return { |
15 | | - promise: d.promise, |
16 | | - num: 1 |
17 | | - }; |
18 | | - }, |
| 13 | + async test({ assert, target, logs }) { |
| 14 | + const [resolve_a, resolve_b, reset, increment] = target.querySelectorAll('button'); |
19 | 15 |
|
20 | | - async test({ assert, target, component, logs }) { |
21 | | - d.resolve(42); |
| 16 | + flushSync(() => resolve_a.click()); |
22 | 17 | await Promise.resolve(); |
23 | 18 | await Promise.resolve(); |
24 | 19 | await Promise.resolve(); |
25 | 20 | await Promise.resolve(); |
26 | 21 | await Promise.resolve(); |
27 | 22 | await Promise.resolve(); |
28 | 23 | flushSync(); |
29 | | - assert.htmlEqual(target.innerHTML, '<p>42</p>'); |
30 | 24 |
|
31 | | - component.num = 2; |
32 | | - await Promise.resolve(); |
33 | | - await Promise.resolve(); |
| 25 | + const p = target.querySelector('p'); |
| 26 | + ok(p); |
| 27 | + assert.htmlEqual(p.innerHTML, '1a'); |
| 28 | + |
| 29 | + flushSync(() => increment.click()); |
34 | 30 | await Promise.resolve(); |
35 | 31 | await tick(); |
36 | | - assert.htmlEqual(target.innerHTML, '<p>84</p>'); |
| 32 | + assert.htmlEqual(p.innerHTML, '2a'); |
37 | 33 |
|
38 | | - d = deferred(); |
39 | | - component.promise = d.promise; |
40 | | - await tick(); |
41 | | - assert.htmlEqual(target.innerHTML, '<p>84</p>'); |
| 34 | + flushSync(() => reset.click()); |
| 35 | + assert.htmlEqual(p.innerHTML, '2a'); |
42 | 36 |
|
43 | | - d.resolve(43); |
44 | | - await Promise.resolve(); |
| 37 | + flushSync(() => resolve_b.click()); |
45 | 38 | await Promise.resolve(); |
46 | 39 | await tick(); |
47 | | - assert.htmlEqual(target.innerHTML, '<p>86</p>'); |
| 40 | + assert.htmlEqual(p.innerHTML, '2b'); |
48 | 41 |
|
49 | 42 | assert.deepEqual(logs, [ |
50 | 43 | 'outside boundary 1', |
51 | | - '$effect.pre 42 1', |
52 | | - 'template 42 1', |
53 | | - '$effect 42 1', |
54 | | - '$effect.pre 84 2', |
55 | | - 'template 84 2', |
| 44 | + '$effect.pre 1a 1', |
| 45 | + 'template 1a 1', |
| 46 | + '$effect 1a 1', |
| 47 | + '$effect.pre 2a 2', |
| 48 | + 'template 2a 2', |
56 | 49 | 'outside boundary 2', |
57 | | - '$effect 84 2', |
58 | | - '$effect.pre 86 2', |
59 | | - 'template 86 2', |
60 | | - '$effect 86 2' |
| 50 | + '$effect 2a 2', |
| 51 | + '$effect.pre 2b 2', |
| 52 | + 'template 2b 2', |
| 53 | + '$effect 2b 2' |
61 | 54 | ]); |
62 | 55 | } |
63 | 56 | }); |
0 commit comments