mirror of https://github.com/sveltejs/svelte
parent
a0f0e8ad67
commit
e3112a4711
@ -0,0 +1,14 @@
|
||||
// with reactive content beside `key`
|
||||
export default {
|
||||
html: `<div>00</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
const div = target.querySelector('div');
|
||||
component.reactive = 2;
|
||||
assert.htmlEqual(target.innerHTML, `<div>02</div>`);
|
||||
assert.strictEqual(div, target.querySelector('div'));
|
||||
|
||||
component.value = 5;
|
||||
assert.htmlEqual(target.innerHTML, `<div>52</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector('div'));
|
||||
}
|
||||
};
|
@ -0,0 +1,8 @@
|
||||
<script>
|
||||
export let value = 0;
|
||||
export let reactive = 0;
|
||||
</script>
|
||||
|
||||
{#key value}
|
||||
<div>{value}{reactive}</div>
|
||||
{/key}
|
@ -0,0 +1,15 @@
|
||||
export default {
|
||||
html: `<div>1</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
let div = target.querySelector("div");
|
||||
await component.append(2);
|
||||
assert.htmlEqual(target.innerHTML, `<div>1</div>`);
|
||||
assert.strictEqual(div, target.querySelector("div"));
|
||||
|
||||
div = target.querySelector("div");
|
||||
|
||||
component.array = [3, 4];
|
||||
assert.htmlEqual(target.innerHTML, `<div>3,4</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector("div"));
|
||||
}
|
||||
};
|
@ -0,0 +1,14 @@
|
||||
<svelte:options immutable />
|
||||
|
||||
<script>
|
||||
export let array = [1];
|
||||
|
||||
export function append(value) {
|
||||
array.push(value);
|
||||
array = array;
|
||||
}
|
||||
</script>
|
||||
|
||||
{#key array}
|
||||
<div>{array.join(',')}</div>
|
||||
{/key}
|
@ -0,0 +1,15 @@
|
||||
export default {
|
||||
html: `<div>1</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
let div = target.querySelector("div");
|
||||
await component.append(2);
|
||||
assert.htmlEqual(target.innerHTML, `<div>1,2</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector("div"));
|
||||
|
||||
div = target.querySelector("div");
|
||||
|
||||
component.array = [3, 4];
|
||||
assert.htmlEqual(target.innerHTML, `<div>3,4</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector("div"));
|
||||
}
|
||||
};
|
@ -0,0 +1,12 @@
|
||||
<script>
|
||||
export let array = [1];
|
||||
|
||||
export function append(value) {
|
||||
array.push(value);
|
||||
array = array;
|
||||
}
|
||||
</script>
|
||||
|
||||
{#key array}
|
||||
<div>{array.join(',')}</div>
|
||||
{/key}
|
@ -0,0 +1,18 @@
|
||||
export default {
|
||||
html: `<div>3</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
const div = target.querySelector("div");
|
||||
|
||||
await component.mutate();
|
||||
assert.htmlEqual(target.innerHTML, `<div>5</div>`);
|
||||
assert.strictEqual(div, target.querySelector("div"));
|
||||
|
||||
await component.reassign();
|
||||
assert.htmlEqual(target.innerHTML, `<div>7</div>`);
|
||||
assert.strictEqual(div, target.querySelector("div"));
|
||||
|
||||
await component.changeKey();
|
||||
assert.htmlEqual(target.innerHTML, `<div>7</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector("div"));
|
||||
}
|
||||
};
|
@ -0,0 +1,17 @@
|
||||
<script>
|
||||
let obj = { key: 1, value: 3 };
|
||||
|
||||
export function mutate() {
|
||||
obj.value = 5;
|
||||
}
|
||||
export function reassign() {
|
||||
obj = { key: 1, value: 7 };
|
||||
}
|
||||
export function changeKey() {
|
||||
obj.key = 3;
|
||||
}
|
||||
</script>
|
||||
|
||||
{#key obj.key}
|
||||
<div>{obj.value}</div>
|
||||
{/key}
|
@ -0,0 +1,28 @@
|
||||
export default {
|
||||
html: `<div>000</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
let div = target.querySelector("div");
|
||||
component.value = 2;
|
||||
assert.htmlEqual(target.innerHTML, `<div>200</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector("div"));
|
||||
|
||||
div = target.querySelector("div");
|
||||
|
||||
component.anotherValue = 5;
|
||||
assert.htmlEqual(target.innerHTML, `<div>250</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector("div"));
|
||||
|
||||
div = target.querySelector("div");
|
||||
|
||||
component.thirdValue = 9;
|
||||
assert.htmlEqual(target.innerHTML, `<div>259</div>`);
|
||||
assert.strictEqual(div, target.querySelector("div"));
|
||||
|
||||
// make dirty while maintain the value of `value + anotherValue`
|
||||
// should update the content, but not recreate the elements
|
||||
await component.$set({ value: 4, anotherValue: 3 });
|
||||
|
||||
assert.htmlEqual(target.innerHTML, `<div>439</div>`);
|
||||
assert.strictEqual(div, target.querySelector("div"));
|
||||
}
|
||||
};
|
@ -1,21 +0,0 @@
|
||||
export default {
|
||||
html: `<div>000</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
let div = target.querySelector('div');
|
||||
component.value = 2;
|
||||
assert.htmlEqual(target.innerHTML, `<div>200</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector('div'));
|
||||
|
||||
div = target.querySelector('div');
|
||||
|
||||
component.anotherValue = 5;
|
||||
assert.htmlEqual(target.innerHTML, `<div>250</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector('div'));
|
||||
|
||||
div = target.querySelector('div');
|
||||
|
||||
component.thirdValue = 9;
|
||||
assert.htmlEqual(target.innerHTML, `<div>259</div>`);
|
||||
assert.strictEqual(div, target.querySelector('div'));
|
||||
}
|
||||
};
|
@ -1,13 +1,17 @@
|
||||
export default {
|
||||
html: `<div>00</div>`,
|
||||
html: `<div>0</div><div>0</div>`,
|
||||
async test({ assert, component, target, window }) {
|
||||
const div = target.querySelector('div');
|
||||
component.reactive = 2;
|
||||
assert.htmlEqual(target.innerHTML, `<div>02</div>`);
|
||||
assert.strictEqual(div, target.querySelector('div'));
|
||||
let [div1, div2] = target.querySelectorAll('div');
|
||||
|
||||
component.value = 5;
|
||||
assert.htmlEqual(target.innerHTML, `<div>52</div>`);
|
||||
assert.notStrictEqual(div, target.querySelector('div'));
|
||||
assert.htmlEqual(target.innerHTML, `<div>5</div><div>0</div>`);
|
||||
assert.notStrictEqual(div1, target.querySelectorAll('div')[0]);
|
||||
assert.strictEqual(div2, target.querySelectorAll('div')[1]);
|
||||
[div1, div2] = target.querySelectorAll('div');
|
||||
|
||||
component.reactive = 10;
|
||||
assert.htmlEqual(target.innerHTML, `<div>5</div><div>10</div>`);
|
||||
assert.strictEqual(div1, target.querySelectorAll('div')[0]);
|
||||
assert.strictEqual(div2, target.querySelectorAll('div')[1]);
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in new issue