UNPKG

@mcdevsl/mc-superset-ui

Version:
50 lines (48 loc) 2.12 kB
import LazyFactory from '@superset-ui/core/src/dimension/svg/LazyFactory'; describe('LazyFactory', () => { describe('createInContainer()', () => { it('creates node in the specified container', () => { const factory = new LazyFactory(() => document.createElement('div')); const div = factory.createInContainer(); const innerDiv = factory.createInContainer(div); expect(div.parentNode).toEqual(document.body); expect(innerDiv.parentNode).toEqual(div); }); it('reuses existing', () => { const factoryFn = jest.fn(() => document.createElement('div')); const factory = new LazyFactory(factoryFn); const div1 = factory.createInContainer(); const div2 = factory.createInContainer(); expect(div1).toBe(div2); expect(factoryFn).toHaveBeenCalledTimes(1); }); }); describe('removeFromContainer', () => { it('removes node from container', () => { const factory = new LazyFactory(() => document.createElement('div')); const div = factory.createInContainer(); const innerDiv = factory.createInContainer(div); expect(div.parentNode).toEqual(document.body); expect(innerDiv.parentNode).toEqual(div); factory.removeFromContainer(); factory.removeFromContainer(div); expect(div.parentNode).toBeNull(); expect(innerDiv.parentNode).toBeNull(); }); it('does not remove if others are using', () => { const factory = new LazyFactory(() => document.createElement('div')); const div1 = factory.createInContainer(); factory.createInContainer(); factory.removeFromContainer(); expect(div1.parentNode).toEqual(document.body); factory.removeFromContainer(); expect(div1.parentNode).toBeNull(); }); it('does not crash if try to remove already removed node', () => { const factory = new LazyFactory(() => document.createElement('div')); factory.createInContainer(); factory.removeFromContainer(); expect(() => factory.removeFromContainer()).not.toThrow(); }); }); });