Skip to content

Commit b1ce5de

Browse files
committed
test: guard effect regression samples
1 parent ee093e4 commit b1ce5de

File tree

4 files changed

+77
-0
lines changed

4 files changed

+77
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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.notInclude(target.textContent?.trim(), 'hit: true');
12+
}
13+
});
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<script lang="ts">
2+
import {untrack} from 'svelte';
3+
4+
let b = $state(false);
5+
let v = $state("one");
6+
let hit = $state(false);
7+
8+
function hitElse(){
9+
$effect.root(()=>{
10+
if (!untrack(()=>hit)){
11+
hit = true
12+
}
13+
})
14+
}
15+
16+
$effect(() => {
17+
v = b ? "one" : "two";
18+
})
19+
</script>
20+
21+
22+
<button onclick={() => b = !b}>Trigger</button>
23+
24+
hit: {hit}
25+
26+
{#if v === "one"}
27+
<div>if1 matched!</div>
28+
{:else if v === "two"}
29+
<div>if2 matched!</div>
30+
{:else}
31+
<div>nothing matched {hitElse()}</div>
32+
{/if}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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>

0 commit comments

Comments
 (0)