Skip to content

Commit f80082c

Browse files
committed
Add test
1 parent 4d611b8 commit f80082c

File tree

2 files changed

+91
-0
lines changed
  • packages/svelte/tests/runtime-runes/samples/devides-chain-with-snippet-fallback-trigger

2 files changed

+91
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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+
});
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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}

0 commit comments

Comments
 (0)