Path: blob/main/src/vs/workbench/contrib/notebook/test/browser/notebookServiceImpl.test.ts
3296 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 { Event } from '../../../../../base/common/event.js';7import { DisposableStore } from '../../../../../base/common/lifecycle.js';8import { URI } from '../../../../../base/common/uri.js';9import { mock } from '../../../../../base/test/common/mock.js';10import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';11import { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';12import { TestConfigurationService } from '../../../../../platform/configuration/test/common/testConfigurationService.js';13import { IFileService } from '../../../../../platform/files/common/files.js';14import { IStorageService } from '../../../../../platform/storage/common/storage.js';15import { IUriIdentityService } from '../../../../../platform/uriIdentity/common/uriIdentity.js';16import { NotebookProviderInfoStore } from '../../browser/services/notebookServiceImpl.js';17import { INotebookEditorModelResolverService } from '../../common/notebookEditorModelResolverService.js';18import { NotebookProviderInfo } from '../../common/notebookProvider.js';19import { EditorResolverService } from '../../../../services/editor/browser/editorResolverService.js';20import { RegisteredEditorPriority } from '../../../../services/editor/common/editorResolverService.js';21import { IExtensionService, nullExtensionDescription } from '../../../../services/extensions/common/extensions.js';22import { workbenchInstantiationService } from '../../../../test/browser/workbenchTestServices.js';2324suite('NotebookProviderInfoStore', function () {25const disposables = ensureNoDisposablesAreLeakedInTestSuite() as Pick<DisposableStore, 'add'>;2627test('Can\'t open untitled notebooks in test #119363', function () {28const instantiationService = workbenchInstantiationService(undefined, disposables);29const store = new NotebookProviderInfoStore(30new class extends mock<IStorageService>() {31override get() { return ''; }32override store() { }33override getObject() { return {}; }34},35new class extends mock<IExtensionService>() {36override onDidRegisterExtensions = Event.None;37},38disposables.add(instantiationService.createInstance(EditorResolverService)),39new TestConfigurationService(),40new class extends mock<IAccessibilityService>() {41override onDidChangeScreenReaderOptimized: Event<void> = Event.None;42},43instantiationService,44new class extends mock<IFileService>() {45override hasProvider() { return true; }46},47new class extends mock<INotebookEditorModelResolverService>() { },48new class extends mock<IUriIdentityService>() { }49);50disposables.add(store);5152const fooInfo = new NotebookProviderInfo({53extension: nullExtensionDescription.identifier,54id: 'foo',55displayName: 'foo',56selectors: [{ filenamePattern: '*.foo' }],57priority: RegisteredEditorPriority.default,58providerDisplayName: 'foo',59});60const barInfo = new NotebookProviderInfo({61extension: nullExtensionDescription.identifier,62id: 'bar',63displayName: 'bar',64selectors: [{ filenamePattern: '*.bar' }],65priority: RegisteredEditorPriority.default,66providerDisplayName: 'bar',67});6869store.add(fooInfo);70store.add(barInfo);7172assert.ok(store.get('foo'));73assert.ok(store.get('bar'));74assert.ok(!store.get('barfoo'));7576let providers = store.getContributedNotebook(URI.parse('file:///test/nb.foo'));77assert.strictEqual(providers.length, 1);78assert.strictEqual(providers[0] === fooInfo, true);7980providers = store.getContributedNotebook(URI.parse('file:///test/nb.bar'));81assert.strictEqual(providers.length, 1);82assert.strictEqual(providers[0] === barInfo, true);8384providers = store.getContributedNotebook(URI.parse('untitled:///Untitled-1'));85assert.strictEqual(providers.length, 2);86assert.strictEqual(providers[0] === fooInfo, true);87assert.strictEqual(providers[1] === barInfo, true);8889providers = store.getContributedNotebook(URI.parse('untitled:///test/nb.bar'));90assert.strictEqual(providers.length, 1);91assert.strictEqual(providers[0] === barInfo, true);92});9394});959697