mirror of
https://github.com/mathuo/dockview
synced 2025-09-04 16:36:21 +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';
|
||||
import { PanelUpdateEvent } from '../../panel/types';
|
||||
import { GroupviewPanel } from '../../groupview/groupviewPanel';
|
||||
import { GroupChangeKind2, GroupOptions } from '../../groupview/groupview';
|
||||
import {
|
||||
GroupChangeKind2,
|
||||
GroupOptions,
|
||||
Groupview,
|
||||
} from '../../groupview/groupview';
|
||||
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
||||
import {
|
||||
DefaultGroupPanelView,
|
||||
@ -463,4 +467,59 @@ describe('groupview', () => {
|
||||
const panel = cut.addPanel({ id: 'id', component: 'component' });
|
||||
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;
|
||||
}
|
||||
|
||||
export interface PanelDeserializerOptions {
|
||||
createPanel: (id: string, group: GroupviewPanel) => IGroupPanel;
|
||||
}
|
||||
|
||||
export class DefaultDeserializer implements IViewDeserializer {
|
||||
constructor(
|
||||
private readonly layout: DockviewComponent,
|
||||
private panelDeserializer: {
|
||||
createPanel: (id: string, group: GroupviewPanel) => IGroupPanel;
|
||||
}
|
||||
private panelDeserializer: PanelDeserializerOptions
|
||||
) {}
|
||||
|
||||
public fromJSON(node: ISerializedLeafNode<GroupPanelViewState>): IGridView {
|
||||
@ -31,7 +33,7 @@ export class DefaultDeserializer implements IViewDeserializer {
|
||||
const group = this.layout.createGroup({
|
||||
id: data.id,
|
||||
locked: !!data.locked,
|
||||
headerHidden: !!data.headerHidden,
|
||||
hideHeader: !!data.hideHeader,
|
||||
});
|
||||
|
||||
for (const child of children) {
|
||||
|
@ -50,7 +50,7 @@ interface GroupMoveEvent {
|
||||
|
||||
interface CoreGroupOptions {
|
||||
locked?: boolean;
|
||||
headerHidden?: boolean;
|
||||
hideHeader?: boolean;
|
||||
}
|
||||
|
||||
export interface GroupOptions extends CoreGroupOptions {
|
||||
@ -260,7 +260,7 @@ export class Groupview extends CompositeDisposable implements IGroupview {
|
||||
this.contentContainer.element
|
||||
);
|
||||
|
||||
this.header.hidden = !!options.headerHidden;
|
||||
this.header.hidden = !!options.hideHeader;
|
||||
this.locked = !!options.locked;
|
||||
|
||||
this.addDisposables(
|
||||
@ -314,7 +314,7 @@ export class Groupview extends CompositeDisposable implements IGroupview {
|
||||
}
|
||||
|
||||
if (this.header.hidden) {
|
||||
result.headerHidden = true;
|
||||
result.hideHeader = true;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
Loading…
x
Reference in New Issue
Block a user