diff --git a/packages/svelte/tests/signals/test.ts b/packages/svelte/tests/signals/test.ts index 937324727b..261198fc1c 100644 --- a/packages/svelte/tests/signals/test.ts +++ b/packages/svelte/tests/signals/test.ts @@ -4,6 +4,7 @@ import * as $ from '../../src/internal/client/runtime'; import { push, pop } from '../../src/internal/client/context'; import { effect, + effect_active, effect_root, render_effect, user_effect, @@ -1390,4 +1391,41 @@ describe('signals', () => { destroy(); }; }); + + test('$effect.active()', () => { + const log: Array = []; + + return () => { + log.push('effect orphan', effect_active()); + const destroy = effect_root(() => { + log.push('effect root', effect_active()); + effect(() => { + log.push('effect', effect_active()); + }); + $.get( + derived(() => { + log.push('derived', effect_active()); + return 1; + }) + ); + return () => { + log.push('effect teardown', effect_active()); + }; + }); + flushSync(); + destroy(); + assert.deepEqual(log, [ + 'effect orphan', + false, + 'effect root', + true, + 'derived', + true, + 'effect', + true, + 'effect teardown', + false + ]); + }; + }); });