diff options
Diffstat (limited to 'spec/frontend/ide/components/preview/clientside_spec.js')
-rw-r--r-- | spec/frontend/ide/components/preview/clientside_spec.js | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/spec/frontend/ide/components/preview/clientside_spec.js b/spec/frontend/ide/components/preview/clientside_spec.js index 7b22f75cee4..220982e1fd9 100644 --- a/spec/frontend/ide/components/preview/clientside_spec.js +++ b/spec/frontend/ide/components/preview/clientside_spec.js @@ -3,6 +3,7 @@ import { GlLoadingIcon } from '@gitlab/ui'; import { shallowMount, createLocalVue } from '@vue/test-utils'; import smooshpack from 'smooshpack'; import Clientside from '~/ide/components/preview/clientside.vue'; +import eventHub from '~/ide/eventhub'; jest.mock('smooshpack', () => ({ Manager: jest.fn(), @@ -70,6 +71,17 @@ describe('IDE clientside preview', () => { }); }; + const createInitializedComponent = () => { + createComponent(); + wrapper.setData({ + sandpackReady: true, + manager: { + listener: jest.fn(), + updatePreview: jest.fn(), + }, + }); + }; + afterEach(() => { wrapper.destroy(); }); @@ -293,33 +305,33 @@ describe('IDE clientside preview', () => { }); describe('update', () => { - beforeEach(() => { - createComponent(); - wrapper.setData({ sandpackReady: true }); - }); - it('initializes manager if manager is empty', () => { createComponent({ getters: { packageJson: dummyPackageJson } }); wrapper.setData({ sandpackReady: true }); wrapper.vm.update(); - jest.advanceTimersByTime(250); - return waitForCalls().then(() => { expect(smooshpack.Manager).toHaveBeenCalled(); }); }); it('calls updatePreview', () => { - wrapper.setData({ - manager: { - listener: jest.fn(), - updatePreview: jest.fn(), - }, - }); + createInitializedComponent(); + wrapper.vm.update(); - jest.advanceTimersByTime(250); + expect(wrapper.vm.manager.updatePreview).toHaveBeenCalledWith(wrapper.vm.sandboxOpts); + }); + }); + + describe('on ide.files.change event', () => { + beforeEach(() => { + createInitializedComponent(); + + eventHub.$emit('ide.files.change'); + }); + + it('calls updatePreview', () => { expect(wrapper.vm.manager.updatePreview).toHaveBeenCalledWith(wrapper.vm.sandboxOpts); }); }); @@ -355,4 +367,18 @@ describe('IDE clientside preview', () => { }); }); }); + + describe('when destroyed', () => { + let spy; + + beforeEach(() => { + createInitializedComponent(); + spy = wrapper.vm.manager.updatePreview; + wrapper.destroy(); + }); + + it('does not call updatePreview', () => { + expect(spy).not.toHaveBeenCalled(); + }); + }); }); |