From 9608ec957dd2340173e58099f32b91d4bc9d61e4 Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Sat, 12 Mar 2022 21:32:43 +0000 Subject: [PATCH 1/2] tests: add tests --- .../src/__tests__/api/component.api.spec.ts | 23 +++++++++-- .../src/__tests__/groupview/groupview.spec.ts | 38 +++++++++++++++++-- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/packages/dockview/src/__tests__/api/component.api.spec.ts b/packages/dockview/src/__tests__/api/component.api.spec.ts index 898260d76..f4eccca30 100644 --- a/packages/dockview/src/__tests__/api/component.api.spec.ts +++ b/packages/dockview/src/__tests__/api/component.api.spec.ts @@ -22,6 +22,10 @@ describe('component.api', () => { 'onDidLayoutChange', 'onDidAddView', 'onDidRemoveView', + 'getPanels', + 'focus', + 'resizeToFit', + 'toJSON', ]; for (const _ of list) { @@ -33,7 +37,7 @@ describe('component.api', () => { const cut = new SplitviewApi(component); - expect((cut as any)[_]).toBeFalsy(); + (cut as any)[_]; expect(f).toBeCalledTimes(1); } @@ -50,6 +54,10 @@ describe('component.api', () => { 'onDidLayoutChange', 'onDidAddView', 'onDidRemoveView', + 'getPanels', + 'focus', + 'resizeToFit', + 'toJSON', ]; for (const _ of list) { @@ -61,7 +69,7 @@ describe('component.api', () => { const cut = new PaneviewApi(component); - expect((cut as any)[_]).toBeFalsy(); + (cut as any)[_]; expect(f).toBeCalledTimes(1); } @@ -80,6 +88,9 @@ describe('component.api', () => { 'onGridEvent', 'onDidLayoutChange', 'orientation', + 'focus', + 'resizeToFit', + 'toJSON', ]; for (const _ of list) { @@ -91,7 +102,7 @@ describe('component.api', () => { const cut = new GridviewApi(component); - expect((cut as any)[_]).toBeFalsy(); + (cut as any)[_]; expect(f).toBeCalledTimes(1); } @@ -115,6 +126,10 @@ describe('component.api', () => { 'groups', 'activeGroup', 'activePanel', + 'focus', + 'closeAllGroups', + 'resizeToFit', + 'toJSON', ]; for (const _ of list) { @@ -126,7 +141,7 @@ describe('component.api', () => { const cut = new DockviewApi(component); - expect((cut as any)[_]).toBeFalsy(); + (cut as any)[_]; expect(f).toBeCalledTimes(1); } diff --git a/packages/dockview/src/__tests__/groupview/groupview.spec.ts b/packages/dockview/src/__tests__/groupview/groupview.spec.ts index 7a1a7872c..d6fc1c10b 100644 --- a/packages/dockview/src/__tests__/groupview/groupview.spec.ts +++ b/packages/dockview/src/__tests__/groupview/groupview.spec.ts @@ -1,4 +1,7 @@ -import { IDockviewComponent } from '../../dockview/dockviewComponent'; +import { + IDockviewComponent, + DockviewComponent, +} from '../../dockview/dockviewComponent'; import { GroupviewPanelState, IGroupPanel, @@ -198,13 +201,21 @@ describe('groupview', () => { let dockview: IDockviewComponent; let options: GroupOptions; + let removePanelMock: jest.Mock; + let removeGroupMock: jest.Mock; + beforeEach(() => { - dockview = ({ + removePanelMock = jest.fn(); + removeGroupMock = jest.fn(); + + dockview = (>{ options: {}, createWatermarkComponent: () => new Watermark(), doSetGroupActive: jest.fn(), id: 'dockview-1', - }); + removePanel: removePanelMock, + removeGroup: removeGroupMock, + }) as DockviewComponent; options = { tabHeight: 30, @@ -412,4 +423,25 @@ describe('groupview', () => { ); expect(viewQuery).toBeTruthy(); }); + + test('closeAllPanels with panels', () => { + const panel1 = new TestPanel('panel1', jest.fn() as any); + const panel2 = new TestPanel('panel2', jest.fn() as any); + const panel3 = new TestPanel('panel3', jest.fn() as any); + + groupview.model.openPanel(panel1); + groupview.model.openPanel(panel2); + groupview.model.openPanel(panel3); + + groupview.model.closeAllPanels(); + + expect(removePanelMock).toBeCalledWith(panel1); + expect(removePanelMock).toBeCalledWith(panel2); + expect(removePanelMock).toBeCalledWith(panel3); + }); + + test('closeAllPanels with no panels', () => { + groupview.model.closeAllPanels(); + expect(removeGroupMock).toBeCalledWith(groupview); + }); }); From 7a189091bbe7c88ac78eab6397b19ba6fcbd9eeb Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Sat, 12 Mar 2022 21:35:35 +0000 Subject: [PATCH 2/2] chore: remove unused code --- .../src/groupview/panel/hostedPanel.ts | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 packages/dockview/src/groupview/panel/hostedPanel.ts diff --git a/packages/dockview/src/groupview/panel/hostedPanel.ts b/packages/dockview/src/groupview/panel/hostedPanel.ts deleted file mode 100644 index 59de605b1..000000000 --- a/packages/dockview/src/groupview/panel/hostedPanel.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { IDisposable } from '../../lifecycle'; -import { IGroupPanel } from '../groupPanel'; -import { IRenderable } from '../types'; - -export interface HostedPanelOptions { - id: string; - parent?: HTMLElement; -} - -export class HostedPanel implements IRenderable, IDisposable { - private readonly _element: HTMLElement; - - get element() { - return this._element; - } - - get id() { - return this.panel.id; - } - - constructor( - private readonly panel: IGroupPanel, - private readonly options: HostedPanelOptions - ) { - if (!options.parent) { - options.parent = document.getElementById('app') as HTMLElement; - options.parent.style.position = 'relative'; - } - - this._element = document.createElement('div'); - this._element.style.visibility = 'hidden'; - this._element.style.overflow = 'hidden'; - // this._element.style.pointerEvents = 'none'; - this._element.id = `webivew-${options.id}`; - - options.parent.appendChild(this._element); - } - - hide() { - this._element.style.visibility = 'hidden'; - } - - show() { - this._element.style.visibility = 'visible'; - } - - layout( - element: HTMLElement, - dimension?: { width: number; height: number } - ) { - if (!this.element || !this.element.parentElement) { - return; - } - const frameRect = element.getBoundingClientRect(); - const containerRect = - this.element.parentElement.getBoundingClientRect(); - this.element.style.position = 'absolute'; - this.element.style.top = `${frameRect.top - containerRect.top}px`; - this.element.style.left = `${frameRect.left - containerRect.left}px`; - this.element.style.width = `${ - dimension ? dimension.width : frameRect.width - }px`; - this.element.style.height = `${ - dimension ? dimension.height : frameRect.height - }px`; - } - - dispose() { - this._element.remove(); - } -}