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