File tree Expand file tree Collapse file tree 2 files changed +91
-0
lines changed
packages/svelte/tests/runtime-runes/samples/devides-chain-with-snippet-fallback-trigger Expand file tree Collapse file tree 2 files changed +91
-0
lines changed Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync , tick } from 'svelte' ;
3+
4+ export default test ( {
5+ async test ( { assert, target } ) {
6+ assert . htmlEqual (
7+ target . innerHTML ,
8+ `
9+ <button id="step1">step1</button>
10+ <button id="step2">step2</button>
11+ <button id="step3">step3</button>
12+ <p>0</p>
13+ `
14+ ) ;
15+
16+ const step1 = /** @type {HTMLButtonElement | null } */ ( target . querySelector ( '#step1' ) ) ;
17+ const step2 = /** @type {HTMLButtonElement | null } */ ( target . querySelector ( '#step2' ) ) ;
18+ const step3 = /** @type {HTMLButtonElement | null } */ ( target . querySelector ( '#step3' ) ) ;
19+
20+ // Step 1: hide and reset data
21+ step1 ?. click ( ) ;
22+ await tick ( ) ;
23+ assert . htmlEqual (
24+ target . innerHTML ,
25+ `
26+ <button id="step1">step1</button>
27+ <button id="step2">step2</button>
28+ <button id="step3">step3</button>
29+ `
30+ ) ;
31+
32+ // Step 2: show again
33+ step2 ?. click ( ) ;
34+ await tick ( ) ;
35+ assert . htmlEqual (
36+ target . innerHTML ,
37+ `
38+ <button id="step1">step1</button>
39+ <button id="step2">step2</button>
40+ <button id="step3">step3</button>
41+ <p>0</p>
42+ `
43+ ) ;
44+
45+ // Step 3: update override - this should show 2, not 0 (the bug)
46+ step3 ?. click ( ) ;
47+ await tick ( ) ;
48+ assert . htmlEqual (
49+ target . innerHTML ,
50+ `
51+ <button id="step1">step1</button>
52+ <button id="step2">step2</button>
53+ <button id="step3">step3</button>
54+ <p>2</p>
55+ `
56+ ) ;
57+ }
58+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let show = $state (true );
3+ let data = $state ({ value: 0 });
4+ let override = $state (null );
5+
6+ let derived1 = $derived (override ?? data .value );
7+ let derived2 = $derived (derived1);
8+
9+ function step1 () {
10+ show = false ;
11+ data = { value: 0 };
12+ }
13+
14+ function step2 () {
15+ show = true ;
16+ }
17+
18+ function step3 () {
19+ override = 1 ;
20+ override = 2 ;
21+ }
22+ < / script>
23+
24+ < button id= " step1" onclick= {step1}> step1< / button>
25+ < button id= " step2" onclick= {step2}> step2< / button>
26+ < button id= " step3" onclick= {step3}> step3< / button>
27+
28+ {#snippet dummy (value = 0 )}{/ snippet}
29+
30+ {#if show}
31+ < p> {derived2}< / p>
32+ {@render dummy (derived2 ? 0 : 0 )}
33+ {/ if }
You can’t perform that action at this time.
0 commit comments