Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/sessions/test/browser/auxiliaryBarPart.test.ts
13394 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { Emitter } from '../../../base/common/event.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../base/test/common/utils.js';
9
import { TestInstantiationService } from '../../../platform/instantiation/test/common/instantiationServiceMock.js';
10
import { IPartVisibilityChangeEvent, IWorkbenchLayoutService, Parts } from '../../../workbench/services/layout/browser/layoutService.js';
11
import { IViewDescriptorService } from '../../../workbench/common/views.js';
12
import { ViewDescriptorService } from '../../../workbench/services/views/browser/viewDescriptorService.js';
13
import { TestLayoutService, workbenchInstantiationService } from '../../../workbench/test/browser/workbenchTestServices.js';
14
import { AuxiliaryBarPart } from '../../browser/parts/auxiliaryBarPart.js';
15
16
class MutableTestLayoutService extends TestLayoutService {
17
18
private readonly _visibleParts = new Map<Parts, boolean>([
19
[Parts.AUXILIARYBAR_PART, true],
20
[Parts.EDITOR_PART, false],
21
]);
22
23
private readonly _onDidChangePartVisibility = new Emitter<IPartVisibilityChangeEvent>();
24
override readonly onDidChangePartVisibility = this._onDidChangePartVisibility.event;
25
26
override isVisible(part: Parts, _targetWindow?: Window): boolean {
27
return this._visibleParts.get(part) ?? false;
28
}
29
30
setVisible(part: Parts, visible: boolean): void {
31
this._visibleParts.set(part, visible);
32
this._onDidChangePartVisibility.fire({ partId: part, visible });
33
}
34
35
dispose(): void {
36
this._onDidChangePartVisibility.dispose();
37
}
38
}
39
40
suite('Sessions - Auxiliary Bar Part', () => {
41
const disposables = ensureNoDisposablesAreLeakedInTestSuite();
42
43
let instantiationService: TestInstantiationService;
44
let layoutService: MutableTestLayoutService;
45
let auxiliaryBarPart: AuxiliaryBarPart;
46
47
setup(() => {
48
layoutService = disposables.add(new MutableTestLayoutService());
49
instantiationService = workbenchInstantiationService({}, disposables);
50
instantiationService.stub(IWorkbenchLayoutService, layoutService as IWorkbenchLayoutService);
51
const viewDescriptorService = disposables.add(instantiationService.createInstance(ViewDescriptorService));
52
instantiationService.stub(IViewDescriptorService, viewDescriptorService);
53
auxiliaryBarPart = disposables.add(instantiationService.createInstance(AuxiliaryBarPart));
54
});
55
56
test('keeps the default minimum width and disables sash snap when the editor part is visible', () => {
57
layoutService.setVisible(Parts.EDITOR_PART, true);
58
59
assert.strictEqual(auxiliaryBarPart.minimumWidth, 270);
60
assert.strictEqual(auxiliaryBarPart.snap, false);
61
});
62
63
test('restores sash snap when the editor part is hidden', () => {
64
layoutService.setVisible(Parts.EDITOR_PART, true);
65
assert.strictEqual(auxiliaryBarPart.snap, false);
66
67
layoutService.setVisible(Parts.EDITOR_PART, false);
68
assert.strictEqual(auxiliaryBarPart.snap, true);
69
});
70
});
71
72