mirror of
https://github.com/mathuo/dockview
synced 2025-09-13 04:38:09 +00:00
test: add tests
This commit is contained in:
parent
ce60215af5
commit
79f4379b8c
@ -0,0 +1,95 @@
|
|||||||
|
import {
|
||||||
|
DefaultDeserializer,
|
||||||
|
PanelDeserializerOptions,
|
||||||
|
} from '../../dockview/deserializer';
|
||||||
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
|
import { Groupview } from '../../groupview/groupview';
|
||||||
|
import { GroupviewPanel } from '../../groupview/groupviewPanel';
|
||||||
|
|
||||||
|
describe('deserializer', () => {
|
||||||
|
test('fromJSON', () => {
|
||||||
|
const openPanel = jest.fn();
|
||||||
|
|
||||||
|
const model = jest.fn<Groupview, []>(() => {
|
||||||
|
const result: Partial<Groupview> = {
|
||||||
|
openPanel,
|
||||||
|
};
|
||||||
|
|
||||||
|
return result as Groupview;
|
||||||
|
});
|
||||||
|
|
||||||
|
const panel1 = jest.fn();
|
||||||
|
const panel2 = jest.fn();
|
||||||
|
|
||||||
|
const groupMock = jest.fn<GroupviewPanel, []>(() => {
|
||||||
|
const result: Partial<GroupviewPanel> = {
|
||||||
|
model: new model(),
|
||||||
|
panels: <any>[panel1, panel2],
|
||||||
|
activePanel: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
return result as GroupviewPanel;
|
||||||
|
});
|
||||||
|
const group = new groupMock();
|
||||||
|
const createGroup = jest.fn().mockReturnValue(new groupMock());
|
||||||
|
|
||||||
|
const dockviewComponentMock = jest.fn<DockviewComponent, []>(() => {
|
||||||
|
const value: Partial<DockviewComponent> = {
|
||||||
|
createGroup,
|
||||||
|
};
|
||||||
|
|
||||||
|
return <DockviewComponent>value;
|
||||||
|
});
|
||||||
|
|
||||||
|
const createPanel = jest
|
||||||
|
.fn()
|
||||||
|
.mockImplementation((child) => ({ id: child }));
|
||||||
|
|
||||||
|
const panelDeserializer: PanelDeserializerOptions = {
|
||||||
|
createPanel,
|
||||||
|
};
|
||||||
|
|
||||||
|
const dockviewComponent = new dockviewComponentMock();
|
||||||
|
|
||||||
|
const cut = new DefaultDeserializer(
|
||||||
|
dockviewComponent,
|
||||||
|
panelDeserializer
|
||||||
|
);
|
||||||
|
|
||||||
|
cut.fromJSON({
|
||||||
|
type: 'leaf',
|
||||||
|
size: 100,
|
||||||
|
visible: true,
|
||||||
|
data: {
|
||||||
|
hideHeader: true,
|
||||||
|
locked: true,
|
||||||
|
id: 'id',
|
||||||
|
views: ['view1', 'view2'],
|
||||||
|
activeView: 'view2',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(createGroup).toBeCalledWith({
|
||||||
|
id: 'id',
|
||||||
|
locked: true,
|
||||||
|
hideHeader: true,
|
||||||
|
});
|
||||||
|
expect(createGroup).toBeCalledTimes(1);
|
||||||
|
|
||||||
|
expect(createPanel).toBeCalledWith('view1', group);
|
||||||
|
expect(createPanel).toBeCalledWith('view2', group);
|
||||||
|
expect(createPanel).toBeCalledTimes(2);
|
||||||
|
|
||||||
|
expect(openPanel).toBeCalledWith(
|
||||||
|
{ id: 'view1' },
|
||||||
|
{ skipSetActive: true }
|
||||||
|
);
|
||||||
|
expect(openPanel).toBeCalledWith(
|
||||||
|
{ id: 'view2' },
|
||||||
|
{ skipSetActive: false }
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(openPanel).toBeCalledWith(panel2);
|
||||||
|
expect(openPanel).toBeCalledTimes(3);
|
||||||
|
});
|
||||||
|
});
|
@ -15,7 +15,11 @@ import {
|
|||||||
} from '../../groupview/types';
|
} from '../../groupview/types';
|
||||||
import { PanelUpdateEvent } from '../../panel/types';
|
import { PanelUpdateEvent } from '../../panel/types';
|
||||||
import { GroupviewPanel } from '../../groupview/groupviewPanel';
|
import { GroupviewPanel } from '../../groupview/groupviewPanel';
|
||||||
import { GroupChangeKind2, GroupOptions } from '../../groupview/groupview';
|
import {
|
||||||
|
GroupChangeKind2,
|
||||||
|
GroupOptions,
|
||||||
|
Groupview,
|
||||||
|
} from '../../groupview/groupview';
|
||||||
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
||||||
import {
|
import {
|
||||||
DefaultGroupPanelView,
|
DefaultGroupPanelView,
|
||||||
@ -463,4 +467,59 @@ describe('groupview', () => {
|
|||||||
const panel = cut.addPanel({ id: 'id', component: 'component' });
|
const panel = cut.addPanel({ id: 'id', component: 'component' });
|
||||||
disposable.dispose();
|
disposable.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('toJSON() default', () => {
|
||||||
|
const dockviewComponent = new DockviewComponent(
|
||||||
|
document.createElement('div'),
|
||||||
|
{
|
||||||
|
components: {
|
||||||
|
component: TestContentPart,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const cut = new Groupview(
|
||||||
|
document.createElement('div'),
|
||||||
|
dockviewComponent,
|
||||||
|
'id',
|
||||||
|
{},
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(cut.toJSON()).toEqual({
|
||||||
|
views: [],
|
||||||
|
activeView: undefined,
|
||||||
|
id: 'id',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('toJSON() locked and hideHeader', () => {
|
||||||
|
const dockviewComponent = new DockviewComponent(
|
||||||
|
document.createElement('div'),
|
||||||
|
{
|
||||||
|
components: {
|
||||||
|
component: TestContentPart,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const cut = new Groupview(
|
||||||
|
document.createElement('div'),
|
||||||
|
dockviewComponent,
|
||||||
|
'id',
|
||||||
|
{},
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
cut.locked = true;
|
||||||
|
cut.header.hidden = true;
|
||||||
|
|
||||||
|
expect(cut.toJSON()).toEqual({
|
||||||
|
views: [],
|
||||||
|
activeView: undefined,
|
||||||
|
id: 'id',
|
||||||
|
locked: true,
|
||||||
|
hideHeader: true,
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -15,12 +15,14 @@ export interface IPanelDeserializer {
|
|||||||
): IGroupPanel;
|
): IGroupPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface PanelDeserializerOptions {
|
||||||
|
createPanel: (id: string, group: GroupviewPanel) => IGroupPanel;
|
||||||
|
}
|
||||||
|
|
||||||
export class DefaultDeserializer implements IViewDeserializer {
|
export class DefaultDeserializer implements IViewDeserializer {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly layout: DockviewComponent,
|
private readonly layout: DockviewComponent,
|
||||||
private panelDeserializer: {
|
private panelDeserializer: PanelDeserializerOptions
|
||||||
createPanel: (id: string, group: GroupviewPanel) => IGroupPanel;
|
|
||||||
}
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public fromJSON(node: ISerializedLeafNode<GroupPanelViewState>): IGridView {
|
public fromJSON(node: ISerializedLeafNode<GroupPanelViewState>): IGridView {
|
||||||
@ -31,7 +33,7 @@ export class DefaultDeserializer implements IViewDeserializer {
|
|||||||
const group = this.layout.createGroup({
|
const group = this.layout.createGroup({
|
||||||
id: data.id,
|
id: data.id,
|
||||||
locked: !!data.locked,
|
locked: !!data.locked,
|
||||||
headerHidden: !!data.headerHidden,
|
hideHeader: !!data.hideHeader,
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const child of children) {
|
for (const child of children) {
|
||||||
|
@ -50,7 +50,7 @@ interface GroupMoveEvent {
|
|||||||
|
|
||||||
interface CoreGroupOptions {
|
interface CoreGroupOptions {
|
||||||
locked?: boolean;
|
locked?: boolean;
|
||||||
headerHidden?: boolean;
|
hideHeader?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GroupOptions extends CoreGroupOptions {
|
export interface GroupOptions extends CoreGroupOptions {
|
||||||
@ -260,7 +260,7 @@ export class Groupview extends CompositeDisposable implements IGroupview {
|
|||||||
this.contentContainer.element
|
this.contentContainer.element
|
||||||
);
|
);
|
||||||
|
|
||||||
this.header.hidden = !!options.headerHidden;
|
this.header.hidden = !!options.hideHeader;
|
||||||
this.locked = !!options.locked;
|
this.locked = !!options.locked;
|
||||||
|
|
||||||
this.addDisposables(
|
this.addDisposables(
|
||||||
@ -314,7 +314,7 @@ export class Groupview extends CompositeDisposable implements IGroupview {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.header.hidden) {
|
if (this.header.hidden) {
|
||||||
result.headerHidden = true;
|
result.hideHeader = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user