chore: tests

This commit is contained in:
mathuo 2021-10-16 20:38:13 +01:00
parent 725f364186
commit edbeeffd60
5 changed files with 157 additions and 0 deletions

View File

@ -588,4 +588,34 @@ describe('dockviewComponent', () => {
expect(panel3!.api.isGroupActive).toBeFalsy();
expect(panel3!.api.group.isActive).toBeFalsy();
});
test('toJSON shouldnt fire any layout events', () => {
dockview.layout(1000, 1000);
dockview.addPanel({
id: 'panel1',
component: 'default',
});
dockview.addPanel({
id: 'panel2',
component: 'default',
});
dockview.addPanel({
id: 'panel3',
component: 'default',
});
dockview.addPanel({
id: 'panel4',
component: 'default',
});
const disposable = dockview.onDidLayoutChange(() => {
fail('onDidLayoutChange shouldnt have been called');
});
const result = dockview.toJSON();
expect(result).toBeTruthy();
disposable.dispose();
});
});

View File

@ -246,4 +246,34 @@ describe('gridview', () => {
activePanel: 'panel_1',
});
});
test('toJSON shouldnt fire any layout events', () => {
gridview.layout(1000, 1000);
gridview.addPanel({
id: 'panel1',
component: 'default',
});
gridview.addPanel({
id: 'panel2',
component: 'default',
});
gridview.addPanel({
id: 'panel3',
component: 'default',
});
gridview.addPanel({
id: 'panel4',
component: 'default',
});
const disposable = gridview.onDidLayoutChange(() => {
fail('onDidLayoutChange shouldnt have been called');
});
const result = gridview.toJSON();
expect(result).toBeTruthy();
disposable.dispose();
});
});

View File

@ -247,4 +247,33 @@ describe('componentPaneview', () => {
],
});
});
test('toJSON shouldnt fire any layout events', () => {
const paneview = new PaneviewComponent(container, {
components: {
testPanel: TestPanel,
},
});
paneview.layout(1000, 1000);
paneview.addPanel({
id: 'panel1',
component: 'testPanel',
title: 'Panel 1',
});
paneview.addPanel({
id: 'panel2',
component: 'testPanel',
title: 'Panel 2',
});
const disposable = paneview.onDidLayoutChange(() => {
fail('onDidLayoutChange shouldnt have been called');
});
const result = paneview.toJSON();
expect(result).toBeTruthy();
disposable.dispose();
});
});

View File

@ -328,4 +328,67 @@ describe('componentSplitview', () => {
activeView: 'panel1',
});
});
test('toJSON shouldnt fire any layout events', () => {
const splitview = new SplitviewComponent(container, {
orientation: Orientation.HORIZONTAL,
components: {
testPanel: TestPanel,
},
});
splitview.layout(1000, 1000);
splitview.addPanel({
id: 'panel1',
component: 'testPanel',
});
splitview.addPanel({
id: 'panel2',
component: 'testPanel',
});
const disposable = splitview.onDidLayoutChange(() => {
fail('onDidLayoutChange shouldnt have been called');
});
const result = splitview.toJSON();
expect(result).toBeTruthy();
disposable.dispose();
});
class EventListenerTracker {
private events = new Map<string, Set<any>>();
get size() {
return this.events.size;
}
constructor() {
const originalAddEventListener = document.addEventListener;
const originalRemoveEventListener = document.removeEventListener;
document.addEventListener = jest.fn((event, callback, options) => {
if (!this.events.has(event)) {
this.events.set(event, new Set<any>());
}
this.events.get(event).add(callback);
originalAddEventListener(event, callback, options);
});
document.removeEventListener = jest.fn(
(event, callback, options) => {
if (this.events.has(event)) {
this.events.get(event).delete(callback);
if (this.events.get(event).size === 0) {
this.events.delete(event);
}
}
originalRemoveEventListener(event, callback, options);
}
);
}
}
});

View File

@ -33,7 +33,12 @@ import { GroupviewPanel } from '../groupview/groupviewPanel';
import { Event } from '../events';
export interface CommonApi {
readonly height: number;
readonly width: number;
readonly onDidLayoutChange: Event<void>;
focus(): void;
layout(width: number, height: number): void;
resizeToFit(): void;
}
export class SplitviewApi implements CommonApi {