Path: blob/main/src/vs/sessions/test/browser/auxiliaryBarPart.test.ts
13394 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { Emitter } from '../../../base/common/event.js';7import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../base/test/common/utils.js';8import { TestInstantiationService } from '../../../platform/instantiation/test/common/instantiationServiceMock.js';9import { IPartVisibilityChangeEvent, IWorkbenchLayoutService, Parts } from '../../../workbench/services/layout/browser/layoutService.js';10import { IViewDescriptorService } from '../../../workbench/common/views.js';11import { ViewDescriptorService } from '../../../workbench/services/views/browser/viewDescriptorService.js';12import { TestLayoutService, workbenchInstantiationService } from '../../../workbench/test/browser/workbenchTestServices.js';13import { AuxiliaryBarPart } from '../../browser/parts/auxiliaryBarPart.js';1415class MutableTestLayoutService extends TestLayoutService {1617private readonly _visibleParts = new Map<Parts, boolean>([18[Parts.AUXILIARYBAR_PART, true],19[Parts.EDITOR_PART, false],20]);2122private readonly _onDidChangePartVisibility = new Emitter<IPartVisibilityChangeEvent>();23override readonly onDidChangePartVisibility = this._onDidChangePartVisibility.event;2425override isVisible(part: Parts, _targetWindow?: Window): boolean {26return this._visibleParts.get(part) ?? false;27}2829setVisible(part: Parts, visible: boolean): void {30this._visibleParts.set(part, visible);31this._onDidChangePartVisibility.fire({ partId: part, visible });32}3334dispose(): void {35this._onDidChangePartVisibility.dispose();36}37}3839suite('Sessions - Auxiliary Bar Part', () => {40const disposables = ensureNoDisposablesAreLeakedInTestSuite();4142let instantiationService: TestInstantiationService;43let layoutService: MutableTestLayoutService;44let auxiliaryBarPart: AuxiliaryBarPart;4546setup(() => {47layoutService = disposables.add(new MutableTestLayoutService());48instantiationService = workbenchInstantiationService({}, disposables);49instantiationService.stub(IWorkbenchLayoutService, layoutService as IWorkbenchLayoutService);50const viewDescriptorService = disposables.add(instantiationService.createInstance(ViewDescriptorService));51instantiationService.stub(IViewDescriptorService, viewDescriptorService);52auxiliaryBarPart = disposables.add(instantiationService.createInstance(AuxiliaryBarPart));53});5455test('keeps the default minimum width and disables sash snap when the editor part is visible', () => {56layoutService.setVisible(Parts.EDITOR_PART, true);5758assert.strictEqual(auxiliaryBarPart.minimumWidth, 270);59assert.strictEqual(auxiliaryBarPart.snap, false);60});6162test('restores sash snap when the editor part is hidden', () => {63layoutService.setVisible(Parts.EDITOR_PART, true);64assert.strictEqual(auxiliaryBarPart.snap, false);6566layoutService.setVisible(Parts.EDITOR_PART, false);67assert.strictEqual(auxiliaryBarPart.snap, true);68});69});707172