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 {
|
export default {
|
||||||
html: `<div>00</div>`,
|
html: `<div>0</div><div>0</div>`,
|
||||||
async test({ assert, component, target, window }) {
|
async test({ assert, component, target, window }) {
|
||||||
const div = target.querySelector('div');
|
let [div1, div2] = target.querySelectorAll('div');
|
||||||
component.reactive = 2;
|
|
||||||
assert.htmlEqual(target.innerHTML, `<div>02</div>`);
|
|
||||||
assert.strictEqual(div, target.querySelector('div'));
|
|
||||||
|
|
||||||
component.value = 5;
|
component.value = 5;
|
||||||
assert.htmlEqual(target.innerHTML, `<div>52</div>`);
|
assert.htmlEqual(target.innerHTML, `<div>5</div><div>0</div>`);
|
||||||
assert.notStrictEqual(div, target.querySelector('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