|
|
|
export default {
|
|
|
|
props: {
|
|
|
|
items: [
|
|
|
|
{ done: false, text: 'one' },
|
|
|
|
{ done: true, text: 'two' },
|
|
|
|
{ done: false, text: 'three' }
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
html: `
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>one</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>two</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>three</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>remaining:one / done:two / remaining:three</p>
|
|
|
|
`,
|
|
|
|
|
|
|
|
ssrHtml: `
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text" value=one><p>one</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox" checked="">
|
|
|
|
<input type="text" value=two><p>two</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text" value=three><p>three</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>remaining:one / done:two / remaining:three</p>
|
|
|
|
`,
|
|
|
|
|
|
|
|
async test({ assert, component, target, window }) {
|
|
|
|
function set_text(i, text) {
|
|
|
|
const input = target.querySelectorAll('input[type="text"]')[i];
|
|
|
|
input.value = text;
|
|
|
|
input.dispatchEvent(new window.Event('input'));
|
|
|
|
}
|
|
|
|
|
|
|
|
function set_done(i, done) {
|
|
|
|
const input = target.querySelectorAll('input[type="checkbox"]')[i];
|
|
|
|
input.checked = done;
|
|
|
|
input.dispatchEvent(new window.Event('change'));
|
|
|
|
}
|
|
|
|
|
|
|
|
component.filter = 'remaining';
|
|
|
|
|
|
|
|
assert.htmlEqual(target.innerHTML, `
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>one</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>three</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>remaining:one / done:two / remaining:three</p>
|
|
|
|
`);
|
|
|
|
|
|
|
|
await set_text(1, 'four');
|
|
|
|
|
|
|
|
assert.htmlEqual(target.innerHTML, `
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>one</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>four</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>remaining:one / done:two / remaining:four</p>
|
|
|
|
`);
|
|
|
|
|
|
|
|
assert.deepEqual(component.items, [
|
|
|
|
{ done: false, text: 'one' },
|
|
|
|
{ done: true, text: 'two' },
|
|
|
|
{ done: false, text: 'four' }
|
|
|
|
]);
|
|
|
|
|
|
|
|
await set_done(0, true);
|
|
|
|
|
|
|
|
assert.htmlEqual(target.innerHTML, `
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>four</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>done:one / done:two / remaining:four</p>
|
|
|
|
`);
|
|
|
|
|
|
|
|
assert.deepEqual(component.items, [
|
|
|
|
{ done: true, text: 'one' },
|
|
|
|
{ done: true, text: 'two' },
|
|
|
|
{ done: false, text: 'four' }
|
|
|
|
]);
|
|
|
|
|
|
|
|
component.filter = 'done';
|
|
|
|
|
|
|
|
assert.htmlEqual(target.innerHTML, `
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>one</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type="checkbox">
|
|
|
|
<input type="text"><p>two</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>done:one / done:two / remaining:four</p>
|
|
|
|
`);
|
|
|
|
}
|
|
|
|
};
|