mirror of
https://github.com/mathuo/dockview
synced 2025-02-09 01:45:45 +00:00
test: add tests
This commit is contained in:
parent
c9e90168a4
commit
02d0ad8634
@ -5354,6 +5354,7 @@ describe('dockviewComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('panel visibility', () => {
|
||||||
test('that setVisible toggles visiblity', () => {
|
test('that setVisible toggles visiblity', () => {
|
||||||
const container = document.createElement('div');
|
const container = document.createElement('div');
|
||||||
|
|
||||||
@ -5519,6 +5520,214 @@ describe('dockviewComponent', () => {
|
|||||||
expect(panel3.group.api.isVisible).toBeFalsy();
|
expect(panel3.group.api.isVisible).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('that watermark appears when all views are not visible', () => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
const container = document.createElement('div');
|
||||||
|
|
||||||
|
const dockview = new DockviewComponent(container, {
|
||||||
|
createComponent(options) {
|
||||||
|
switch (options.name) {
|
||||||
|
case 'default':
|
||||||
|
return new PanelContentPartTest(
|
||||||
|
options.id,
|
||||||
|
options.name
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
throw new Error(`unsupported`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const api = new DockviewApi(dockview);
|
||||||
|
|
||||||
|
dockview.layout(1000, 1000);
|
||||||
|
|
||||||
|
const panel1 = api.addPanel({
|
||||||
|
id: 'panel_1',
|
||||||
|
component: 'default',
|
||||||
|
});
|
||||||
|
const panel2 = api.addPanel({
|
||||||
|
id: 'panel_2',
|
||||||
|
component: 'default',
|
||||||
|
position: {
|
||||||
|
direction: 'right',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
let query = queryByTestId(container, 'watermark-component');
|
||||||
|
expect(query).toBeFalsy();
|
||||||
|
|
||||||
|
panel1.group.api.setVisible(false);
|
||||||
|
jest.runAllTicks(); // visibility events check fires on microtask-queue
|
||||||
|
query = queryByTestId(container, 'watermark-component');
|
||||||
|
expect(query).toBeFalsy();
|
||||||
|
|
||||||
|
panel2.group.api.setVisible(false);
|
||||||
|
jest.runAllTicks(); // visibility events check fires on microtask-queue
|
||||||
|
query = queryByTestId(container, 'watermark-component');
|
||||||
|
expect(query).toBeTruthy();
|
||||||
|
|
||||||
|
panel1.group.api.setVisible(true);
|
||||||
|
jest.runAllTicks(); // visibility events check fires on microtask-queue
|
||||||
|
query = queryByTestId(container, 'watermark-component');
|
||||||
|
expect(query).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('setVisible on floating group', () => {
|
||||||
|
const container = document.createElement('div');
|
||||||
|
|
||||||
|
const dockview = new DockviewComponent(container, {
|
||||||
|
createComponent(options) {
|
||||||
|
switch (options.name) {
|
||||||
|
case 'default':
|
||||||
|
return new PanelContentPartTest(
|
||||||
|
options.id,
|
||||||
|
options.name
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
throw new Error(`unsupported`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const api = new DockviewApi(dockview);
|
||||||
|
|
||||||
|
dockview.layout(1000, 1000);
|
||||||
|
|
||||||
|
const panel1 = api.addPanel({
|
||||||
|
id: 'panel1',
|
||||||
|
component: 'default',
|
||||||
|
});
|
||||||
|
const panel2 = api.addPanel({
|
||||||
|
id: 'panel2',
|
||||||
|
component: 'default',
|
||||||
|
position: { referencePanel: panel1, direction: 'below' },
|
||||||
|
});
|
||||||
|
|
||||||
|
const panel3 = api.addPanel({
|
||||||
|
id: 'panel3',
|
||||||
|
component: 'default',
|
||||||
|
position: { referencePanel: panel1, direction: 'below' },
|
||||||
|
});
|
||||||
|
|
||||||
|
api.addFloatingGroup(panel2);
|
||||||
|
expect(panel2.api.location.type).toBe('floating');
|
||||||
|
|
||||||
|
panel2.api.group.setVisible(false);
|
||||||
|
expect(panel2.api.isVisible).toBeFalsy();
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeFalsy();
|
||||||
|
|
||||||
|
panel2.api.group.setVisible(true);
|
||||||
|
expect(panel2.api.isVisible).toBeTruthy();
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeTruthy();
|
||||||
|
|
||||||
|
panel2.api.group.setVisible(false);
|
||||||
|
expect(panel2.api.isVisible).toBeFalsy();
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeFalsy();
|
||||||
|
|
||||||
|
panel2.api.group.api.moveTo({
|
||||||
|
group: panel1.group,
|
||||||
|
position: 'left',
|
||||||
|
});
|
||||||
|
expect(api.groups.length).toBe(3);
|
||||||
|
expect(panel2.api.isVisible).toBeFalsy();
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeFalsy();
|
||||||
|
|
||||||
|
panel2.api.group.setVisible(true);
|
||||||
|
expect(panel2.api.isVisible).toBeTruthy();
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('setVisible on popout group should have no effect', async () => {
|
||||||
|
window.open = () => setupMockWindow();
|
||||||
|
|
||||||
|
const container = document.createElement('div');
|
||||||
|
|
||||||
|
const dockview = new DockviewComponent(container, {
|
||||||
|
createComponent(options) {
|
||||||
|
switch (options.name) {
|
||||||
|
case 'default':
|
||||||
|
return new PanelContentPartTest(
|
||||||
|
options.id,
|
||||||
|
options.name
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
throw new Error(`unsupported`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const api = new DockviewApi(dockview);
|
||||||
|
|
||||||
|
dockview.layout(1000, 1000);
|
||||||
|
|
||||||
|
const panel1 = api.addPanel({
|
||||||
|
id: 'panel1',
|
||||||
|
component: 'default',
|
||||||
|
});
|
||||||
|
const panel2 = api.addPanel({
|
||||||
|
id: 'panel2',
|
||||||
|
component: 'default',
|
||||||
|
position: { referencePanel: panel1, direction: 'below' },
|
||||||
|
});
|
||||||
|
|
||||||
|
const panel3 = api.addPanel({
|
||||||
|
id: 'panel3',
|
||||||
|
component: 'default',
|
||||||
|
position: { referencePanel: panel1, direction: 'below' },
|
||||||
|
});
|
||||||
|
|
||||||
|
await api.addPopoutGroup(panel2);
|
||||||
|
expect(panel2.api.location.type).toBe('popout');
|
||||||
|
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeTruthy();
|
||||||
|
panel2.api.group.api.setVisible(false);
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('opening a popout group from a group that is non visible should automatically make it visible', async () => {
|
||||||
|
window.open = () => setupMockWindow();
|
||||||
|
|
||||||
|
const container = document.createElement('div');
|
||||||
|
|
||||||
|
const dockview = new DockviewComponent(container, {
|
||||||
|
createComponent(options) {
|
||||||
|
switch (options.name) {
|
||||||
|
case 'default':
|
||||||
|
return new PanelContentPartTest(
|
||||||
|
options.id,
|
||||||
|
options.name
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
throw new Error(`unsupported`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const api = new DockviewApi(dockview);
|
||||||
|
|
||||||
|
dockview.layout(1000, 1000);
|
||||||
|
|
||||||
|
const panel1 = api.addPanel({
|
||||||
|
id: 'panel1',
|
||||||
|
component: 'default',
|
||||||
|
});
|
||||||
|
const panel2 = api.addPanel({
|
||||||
|
id: 'panel2',
|
||||||
|
component: 'default',
|
||||||
|
position: { referencePanel: panel1, direction: 'below' },
|
||||||
|
});
|
||||||
|
|
||||||
|
const panel3 = api.addPanel({
|
||||||
|
id: 'panel3',
|
||||||
|
component: 'default',
|
||||||
|
position: { referencePanel: panel1, direction: 'below' },
|
||||||
|
});
|
||||||
|
|
||||||
|
panel2.api.group.api.setVisible(false);
|
||||||
|
|
||||||
|
await api.addPopoutGroup(panel2);
|
||||||
|
expect(panel2.api.location.type).toBe('popout');
|
||||||
|
expect(panel2.api.group.api.isVisible).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('addPanel', () => {
|
describe('addPanel', () => {
|
||||||
test('that can add panel to index with referencePanel', () => {
|
test('that can add panel to index with referencePanel', () => {
|
||||||
const container = document.createElement('div');
|
const container = document.createElement('div');
|
||||||
@ -5939,58 +6148,6 @@ describe('dockviewComponent', () => {
|
|||||||
expect(api.groups.length).toBe(3);
|
expect(api.groups.length).toBe(3);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('that watermark appears when all views are not visible', () => {
|
|
||||||
jest.useFakeTimers();
|
|
||||||
const container = document.createElement('div');
|
|
||||||
|
|
||||||
const dockview = new DockviewComponent(container, {
|
|
||||||
createComponent(options) {
|
|
||||||
switch (options.name) {
|
|
||||||
case 'default':
|
|
||||||
return new PanelContentPartTest(
|
|
||||||
options.id,
|
|
||||||
options.name
|
|
||||||
);
|
|
||||||
default:
|
|
||||||
throw new Error(`unsupported`);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const api = new DockviewApi(dockview);
|
|
||||||
|
|
||||||
dockview.layout(1000, 1000);
|
|
||||||
|
|
||||||
const panel1 = api.addPanel({
|
|
||||||
id: 'panel_1',
|
|
||||||
component: 'default',
|
|
||||||
});
|
|
||||||
const panel2 = api.addPanel({
|
|
||||||
id: 'panel_2',
|
|
||||||
component: 'default',
|
|
||||||
position: {
|
|
||||||
direction: 'right',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
let query = queryByTestId(container, 'watermark-component');
|
|
||||||
expect(query).toBeFalsy();
|
|
||||||
|
|
||||||
panel1.group.api.setVisible(false);
|
|
||||||
jest.runAllTicks(); // visibility events check fires on microtask-queue
|
|
||||||
query = queryByTestId(container, 'watermark-component');
|
|
||||||
expect(query).toBeFalsy();
|
|
||||||
|
|
||||||
panel2.group.api.setVisible(false);
|
|
||||||
jest.runAllTicks(); // visibility events check fires on microtask-queue
|
|
||||||
query = queryByTestId(container, 'watermark-component');
|
|
||||||
expect(query).toBeTruthy();
|
|
||||||
|
|
||||||
panel1.group.api.setVisible(true);
|
|
||||||
jest.runAllTicks(); // visibility events check fires on microtask-queue
|
|
||||||
query = queryByTestId(container, 'watermark-component');
|
|
||||||
expect(query).toBeFalsy();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('updateOptions', () => {
|
describe('updateOptions', () => {
|
||||||
test('gap', () => {
|
test('gap', () => {
|
||||||
const container = document.createElement('div');
|
const container = document.createElement('div');
|
||||||
|
Loading…
Reference in New Issue
Block a user