From 032340b49dfe9201d51d9ca35f8a554ee78c8207 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 3 Jul 2024 09:29:46 +0100 Subject: [PATCH] chore: add unowned signals test --- packages/svelte/tests/signals/test.ts | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/svelte/tests/signals/test.ts b/packages/svelte/tests/signals/test.ts index aeb907f700..555beb0526 100644 --- a/packages/svelte/tests/signals/test.ts +++ b/packages/svelte/tests/signals/test.ts @@ -574,4 +574,40 @@ describe('signals', () => { assert.equal(d.deps?.length, 1); }; }); + + test('unowned deriveds are correctly connected and disconnected from the graph', () => { + var count = source(0); + + function create_derived() { + return derived(() => $.get(count) * 2); + } + + return () => { + let d = create_derived(); + + const destroy = effect_root(() => { + render_effect(() => { + assert.equal($.get(d), 0); + }); + }); + + assert.equal($.get(d), 0); + assert.equal(count.reactions?.length, 1); + assert.equal(d.deps?.length, 1); + + set(count, 1); + assert.equal($.get(d), 2); + assert.equal(count.reactions?.length, 1); + assert.equal(d.deps?.length, 1); + + destroy(); + + assert.equal(count.reactions, null); + + set(count, 2); + assert.equal($.get(d), 4); + assert.equal(count.reactions, null); + assert.equal(d.deps?.length, 1); + }; + }); });