diff --git a/src/__tests__/auto-cleanup.test.js b/src/__tests__/auto-cleanup.test.js index 3ed6515..92104cd 100644 --- a/src/__tests__/auto-cleanup.test.js +++ b/src/__tests__/auto-cleanup.test.js @@ -13,3 +13,17 @@ describe('auto-cleanup', () => { expect(document.body.innerHTML).toEqual('') }) }) + +describe('cleanup of two components', () => { + // This just verifies that by importing STL in an + // environment which supports afterEach (like jest) + // we'll get automatic cleanup between tests. + test('first', () => { + render(Comp, { props: { name: 'world' } }) + render(Comp, { props: { name: 'universe' } }) + }) + + test('second', () => { + expect(document.body.innerHTML).toEqual('') + }) +}) diff --git a/src/pure.js b/src/pure.js index 3198b43..f9f1474 100644 --- a/src/pure.js +++ b/src/pure.js @@ -5,7 +5,7 @@ import { } from '@testing-library/dom' import { tick } from 'svelte' -const containerCache = new Map() +const containerCache = new Set() const componentCache = new Set() const svelteComponentOptions = [ @@ -59,7 +59,7 @@ const render = ( ...checkProps(options), }) - containerCache.set(container, { target, component }) + containerCache.add({ container, target, component }) componentCache.add(component) component.$$.on_destroy.push(() => { @@ -79,7 +79,7 @@ const render = ( ...checkProps(options), }) - containerCache.set(container, { target, component }) + containerCache.add({ container, target, component }) componentCache.add(component) component.$$.on_destroy.push(() => { @@ -93,8 +93,8 @@ const render = ( } } -const cleanupAtContainer = (container) => { - const { target, component } = containerCache.get(container) +const cleanupAtContainer = (cached) => { + const { target, component } = cached if (componentCache.has(component)) component.$destroy() @@ -102,7 +102,7 @@ const cleanupAtContainer = (container) => { document.body.removeChild(target) } - containerCache.delete(container) + containerCache.delete(cached) } const cleanup = () => {