diff --git a/packages/svelte/test/js/samples/each-block-changed-check/expected.js b/packages/svelte/test/js/samples/each-block-changed-check/expected.js index 6d03010c26..6e1ad86fc1 100644 --- a/packages/svelte/test/js/samples/each-block-changed-check/expected.js +++ b/packages/svelte/test/js/samples/each-block-changed-check/expected.js @@ -114,7 +114,10 @@ function create_fragment(ctx) { }, p(ctx, [dirty]) { if (dirty & /*comments, elapsed, time*/ 7) { - each_value = ensure_array_like(/*comments*/ ctx[0]); + if (dirty & /*comments*/ 1) { + each_value = ensure_array_like(/*comments*/ ctx[0]); + } + let i; for (i = 0; i < each_value.length; i += 1) { @@ -171,4 +174,4 @@ class Component extends SvelteComponent { } } -export default Component; \ No newline at end of file +export default Component; diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-1/_config.js b/packages/svelte/test/runtime/samples/each-block-bind-this-1/_config.js new file mode 100644 index 0000000000..be5b9640d8 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-1/_config.js @@ -0,0 +1,12 @@ +export default { + html: ` +

0

1

2

+ `, + + async test({ assert, window, component, target }) { + const pArray = target.querySelectorAll('p'); + assert.equal(component.bindings[0], pArray[0]); + assert.equal(component.bindings[1], pArray[1]); + assert.equal(component.bindings[2], pArray[2]); + } +}; diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-1/main.svelte b/packages/svelte/test/runtime/samples/each-block-bind-this-1/main.svelte new file mode 100644 index 0000000000..7544e10592 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-1/main.svelte @@ -0,0 +1,10 @@ + + +{#each arrFunc() as obj} +

{obj.value}

+{/each} diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-2/_config.js b/packages/svelte/test/runtime/samples/each-block-bind-this-2/_config.js new file mode 100644 index 0000000000..4f4d46ebc3 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-2/_config.js @@ -0,0 +1,19 @@ +export default { + html: ` +

1

+ `, + + async test({ assert, window, component, target }) { + const p1 = target.querySelector('p'); + assert.equal(component.bindings[1], p1); + + const button = target.querySelector('button'); + const event = new window.MouseEvent('click'); + + await button.dispatchEvent(event); + assert.htmlEqual(target.innerHTML, '

2

'); + + const p2 = target.querySelector('p'); + assert.equal(component.bindings[2], p2); + } +}; diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-2/main.svelte b/packages/svelte/test/runtime/samples/each-block-bind-this-2/main.svelte new file mode 100644 index 0000000000..8d8b6a2a7b --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-2/main.svelte @@ -0,0 +1,21 @@ + + + +{#each arrFunc() as { value }} +

{value}

+{/each} diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-3/_config.js b/packages/svelte/test/runtime/samples/each-block-bind-this-3/_config.js new file mode 100644 index 0000000000..c40465f002 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-3/_config.js @@ -0,0 +1,12 @@ +export default { + html: ` +

10

20

30

+ `, + + async test({ assert, window, component, target }) { + const pArray = target.querySelectorAll('p'); + assert.equal(component.bindings[10], pArray[0]); + assert.equal(component.bindings[20], pArray[1]); + assert.equal(component.bindings[30], pArray[2]); + } +}; diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-3/main.svelte b/packages/svelte/test/runtime/samples/each-block-bind-this-3/main.svelte new file mode 100644 index 0000000000..c131d96e10 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-3/main.svelte @@ -0,0 +1,7 @@ + + +{#each [{ outer: [10] }, { outer: [20] }, { outer: [30] }] as { outer } } +

{outer[0]}

+{/each} diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-4/_config.js b/packages/svelte/test/runtime/samples/each-block-bind-this-4/_config.js new file mode 100644 index 0000000000..819d6442ce --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-4/_config.js @@ -0,0 +1,23 @@ +export default { + html: ` +

1

2

+ `, + + async test({ assert, window, component, target }) { + const pArray1 = target.querySelectorAll('p'); + assert.equal(component.bindings['hello'], pArray1[0]); + assert.equal(component.bindings['goodbye'], pArray1[1]); + + const button = target.querySelector('button'); + const event = new window.MouseEvent('click'); + await button.dispatchEvent(event); + + assert.htmlEqual(target.innerHTML, '

-1

-2

'); + + const pArray2 = target.querySelectorAll('p'); + assert.equal(component.bindings['olleh'], pArray2[0]); + assert.equal(component.bindings['eybdoog'], pArray2[1]); + assert.equal(component.bindings['hello'], null); + assert.equal(component.bindings['goodbye'], null); + } +}; diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-4/main.svelte b/packages/svelte/test/runtime/samples/each-block-bind-this-4/main.svelte new file mode 100644 index 0000000000..4a5104b770 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-4/main.svelte @@ -0,0 +1,25 @@ + + + +{#each arrIterable as [key, value]} +

{value.value}

+{/each} diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-5/_config.js b/packages/svelte/test/runtime/samples/each-block-bind-this-5/_config.js new file mode 100644 index 0000000000..357f5f342d --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-5/_config.js @@ -0,0 +1,12 @@ +export default { + html: ` +

0

1

2

3

4

5

6

7

8

9

+ `, + + async test({ assert, window, component, target }) { + const pArray = target.querySelectorAll('p'); + for (let i = 0; i <= 9; i++) { + assert.equal(component.bindings[i], pArray[i]); + } + } +}; diff --git a/packages/svelte/test/runtime/samples/each-block-bind-this-5/main.svelte b/packages/svelte/test/runtime/samples/each-block-bind-this-5/main.svelte new file mode 100644 index 0000000000..c259b29498 --- /dev/null +++ b/packages/svelte/test/runtime/samples/each-block-bind-this-5/main.svelte @@ -0,0 +1,14 @@ + + +{#each set as newSet} + {#each newSet as piece} +

{piece[0]}

+ {/each} +{/each}