File tree Expand file tree Collapse file tree 4 files changed +79
-0
lines changed
packages/svelte/tests/runtime-runes/samples Expand file tree Collapse file tree 4 files changed +79
-0
lines changed Original file line number Diff line number Diff line change 1+ import { expect , vi } from 'vitest' ;
2+ import { test } from '../../test' ;
3+ import { flushSync } from 'svelte' ;
4+
5+ const trackBranch = vi . fn ( ) ;
6+
7+ export default test ( {
8+ mode : [ 'client' ] ,
9+ props : { trackBranch : trackBranch } ,
10+ async test ( { target } ) {
11+ const button = target . querySelector ( 'button' ) ;
12+
13+ flushSync ( ( ) => button ?. click ( ) ) ;
14+ flushSync ( ( ) => button ?. click ( ) ) ;
15+ flushSync ( ( ) => button ?. click ( ) ) ;
16+ flushSync ( ( ) => button ?. click ( ) ) ;
17+
18+ expect ( trackBranch ) . toHaveBeenCalledWith ( 'one' ) ;
19+ expect ( trackBranch ) . toHaveBeenCalledWith ( 'two' ) ;
20+ expect ( trackBranch ) . not . toHaveBeenCalledWith ( 'else' ) ;
21+ }
22+ } ) ;
Original file line number Diff line number Diff line change 1+ <script lang =" ts" >
2+ import {untrack } from ' svelte' ;
3+
4+ const {trackBranch}: {trackBranch: (branch : string )=> void } = $props ();
5+
6+ let b = $state (false );
7+ let v = $state (" two" );
8+
9+
10+ $effect (() => {
11+ v = b ? " one" : " two" ;
12+ })
13+ </script >
14+
15+
16+ <button onclick ={() => b = ! b }>Trigger</button >
17+
18+
19+ {#if v === " one" }
20+ <div >if1 matched! {trackBranch (' one' )}</div >
21+ {:else if v === " two" }
22+ <div >if2 matched! {trackBranch (' two' )}</div >
23+ {:else }
24+ <div >nothing matched {trackBranch (' else' )}</div >
25+ {/if }
Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+ async test ( { target, assert } ) {
7+ const button = target . querySelector ( 'button' ) ;
8+
9+ flushSync ( ( ) => button ?. click ( ) ) ;
10+
11+ assert . equal ( target . textContent ?. trim ( ) , 'Trigger' ) ;
12+ }
13+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let centerRow = $state ({ nested: { optional: 2 , required: 3 } },
3+ );
4+
5+ let someChange = $state (false );
6+ $effect (() => {
7+ if (someChange) centerRow = undefined ;
8+ });
9+ </script >
10+
11+ {#if centerRow ?.nested }
12+ {#if centerRow ?.nested ?.optional != undefined && centerRow .nested .optional > 0 }
13+ op: {centerRow .nested .optional }<br />
14+ {:else }
15+ req: {centerRow .nested .required }<br />
16+ {/if }
17+ {/if }
18+
19+ <button onclick ={() => (someChange = true )}>Trigger</button >
You can’t perform that action at this time.
0 commit comments