test: add tests

This commit is contained in:
mathuo 2024-01-04 22:06:49 +00:00
parent 4b616c5578
commit aa6eb27d7d
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
5 changed files with 1281 additions and 1070 deletions

View File

@ -1,4 +1,8 @@
import { CompositeDisposable, MutableDisposable } from '../lifecycle';
import {
CompositeDisposable,
Disposable,
MutableDisposable,
} from '../lifecycle';
describe('lifecycle', () => {
test('mutable disposable', () => {
@ -64,4 +68,16 @@ describe('lifecycle', () => {
expect(cut.checkIsDisposed()).toBeTruthy();
});
test('Disposable.from(...)', () => {
const func = jest.fn();
const disposable = Disposable.from(func);
expect(func).not.toHaveBeenCalled();
disposable.dispose();
expect(func).toHaveBeenCalledTimes(1);
});
});

View File

@ -7,7 +7,7 @@ import {
import { directionToPosition, Droptarget, Position } from '../dnd/droptarget';
import { tail, sequenceEquals, remove } from '../array';
import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
import { CompositeDisposable } from '../lifecycle';
import { CompositeDisposable, Disposable } from '../lifecycle';
import { Event, Emitter } from '../events';
import { Watermark } from './components/watermark/watermark';
import {
@ -58,7 +58,10 @@ import {
DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
DEFAULT_FLOATING_GROUP_POSITION,
} from '../constants';
import { DockviewPanelRenderer, OverlayRenderContainer } from '../overlayRenderContainer';
import {
DockviewPanelRenderer,
OverlayRenderContainer,
} from '../overlayRenderContainer';
function getTheme(element: HTMLElement): string | undefined {
function toClassList(element: HTMLElement) {
@ -386,6 +389,17 @@ export class DockviewComponent
this.onDidActivePanelChange
)(() => {
this._bufferOnDidLayoutChange.fire();
}),
Disposable.from(() => {
// iterate over a copy of the array since .dispose() mutates the original array
for (const group of [...this._floatingGroups]) {
group.dispose();
}
// iterate over a copy of the array since .dispose() mutates the original array
for (const group of [...this._popoutGroups]) {
group.dispose();
}
})
);

View File

@ -13,6 +13,14 @@ export namespace Disposable {
// noop
},
};
export function from(func: () => void): IDisposable {
return {
dispose: () => {
func();
},
};
}
}
export class CompositeDisposable {

View File

@ -75,10 +75,7 @@ export class PopoutWindow extends CompositeDisposable {
this._window = { value: externalWindow, disposable };
const grievingParent = content.parentElement;
const cleanUp = () => {
grievingParent?.appendChild(content);
this._onDidClose.fire();
this._window = null;
};