Skip to content

Commit 7c09c16

Browse files
committed
add another test
1 parent bc77473 commit 7c09c16

File tree

3 files changed

+166
-2
lines changed

3 files changed

+166
-2
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script>
2-
const { foo } = x();
2+
const { foo } = $state(x());
33
</script>
44

5-
{#each foo as f}{/each}
5+
{#each foo as f}{/each}
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
import { flushSync } from 'svelte';
2+
import { test } from '../../test';
3+
4+
export default test({
5+
html: `
6+
<div>
7+
<input type="checkbox">
8+
<input type="text"><p>one</p>
9+
</div>
10+
<div>
11+
<input type="checkbox">
12+
<input type="text"><p>two</p>
13+
</div>
14+
<div>
15+
<input type="checkbox">
16+
<input type="text"><p>three</p>
17+
</div>
18+
19+
<p>remaining:one / done:two / remaining:three</p>
20+
`,
21+
22+
ssrHtml: `
23+
<div>
24+
<input type="checkbox">
25+
<input type="text" value=one><p>one</p>
26+
</div>
27+
<div>
28+
<input type="checkbox" checked="">
29+
<input type="text" value=two><p>two</p>
30+
</div>
31+
<div>
32+
<input type="checkbox">
33+
<input type="text" value=three><p>three</p>
34+
</div>
35+
36+
<p>remaining:one / done:two / remaining:three</p>
37+
`,
38+
39+
test({ assert, component, target, window }) {
40+
/**
41+
* @param {number} i
42+
* @param {string} text
43+
*/
44+
function set_text(i, text) {
45+
const input = /** @type {HTMLInputElement} */ (
46+
target.querySelectorAll('input[type="text"]')[i]
47+
);
48+
input.value = text;
49+
input.dispatchEvent(new window.Event('input'));
50+
}
51+
52+
/**
53+
* @param {number} i
54+
* @param {boolean} done
55+
*/
56+
function set_done(i, done) {
57+
const input = /** @type {HTMLInputElement} */ (
58+
target.querySelectorAll('input[type="checkbox"]')[i]
59+
);
60+
input.checked = done;
61+
input.dispatchEvent(new window.Event('change'));
62+
}
63+
64+
component.filter = 'remaining';
65+
66+
assert.htmlEqual(
67+
target.innerHTML,
68+
`
69+
<div>
70+
<input type="checkbox">
71+
<input type="text"><p>one</p>
72+
</div>
73+
<div>
74+
<input type="checkbox">
75+
<input type="text"><p>three</p>
76+
</div>
77+
78+
<p>remaining:one / done:two / remaining:three</p>
79+
`
80+
);
81+
82+
set_text(1, 'four');
83+
flushSync();
84+
85+
assert.htmlEqual(
86+
target.innerHTML,
87+
`
88+
<div>
89+
<input type="checkbox">
90+
<input type="text"><p>one</p>
91+
</div>
92+
<div>
93+
<input type="checkbox">
94+
<input type="text"><p>four</p>
95+
</div>
96+
97+
<p>remaining:one / done:two / remaining:four</p>
98+
`
99+
);
100+
101+
set_done(0, true);
102+
flushSync();
103+
104+
assert.htmlEqual(
105+
target.innerHTML,
106+
`
107+
<div>
108+
<input type="checkbox">
109+
<input type="text"><p>four</p>
110+
</div>
111+
112+
<p>done:one / done:two / remaining:four</p>
113+
`
114+
);
115+
116+
component.filter = 'done';
117+
118+
assert.htmlEqual(
119+
target.innerHTML,
120+
`
121+
<div>
122+
<input type="checkbox">
123+
<input type="text"><p>one</p>
124+
</div>
125+
<div>
126+
<input type="checkbox">
127+
<input type="text"><p>two</p>
128+
</div>
129+
130+
<p>done:one / done:two / remaining:four</p>
131+
`
132+
);
133+
}
134+
});
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<script>
2+
let items = [
3+
{ done: false, text: 'one' },
4+
{ done: true, text: 'two' },
5+
{ done: false, text: 'three' }
6+
];
7+
8+
export let filter = 'all';
9+
10+
$: done = items.filter(item => item.done);
11+
$: remaining = items.filter(item => !item.done);
12+
13+
$: filtered = (
14+
filter === 'all' ? items :
15+
filter === 'done' ? done :
16+
remaining
17+
);
18+
19+
$: summary = items.map(i => `${i.done ? 'done' : 'remaining'}:${i.text}`).join(' / ');
20+
</script>
21+
22+
{#each filtered as item}
23+
<div>
24+
<input type="checkbox" bind:checked={item.done}>
25+
<input type="text" bind:value={item.text}>
26+
<p>{item.text}</p>
27+
</div>
28+
{/each}
29+
30+
<p>{summary}</p>

0 commit comments

Comments
 (0)