Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/notebook/test/browser/notebookRendererMessagingService.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 { NullExtensionService } from '../../../../services/extensions/common/extensions.js';
7
import { stub } from 'sinon';
8
import { NotebookRendererMessagingService } from '../../browser/services/notebookRendererMessagingServiceImpl.js';
9
import assert from 'assert';
10
import { timeout } from '../../../../../base/common/async.js';
11
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
12
13
suite('NotebookRendererMessaging', () => {
14
let extService: NullExtensionService;
15
let m: NotebookRendererMessagingService;
16
let sent: unknown[] = [];
17
18
const ds = ensureNoDisposablesAreLeakedInTestSuite();
19
20
setup(() => {
21
sent = [];
22
extService = new NullExtensionService();
23
m = ds.add(new NotebookRendererMessagingService(extService));
24
ds.add(m.onShouldPostMessage(e => sent.push(e)));
25
});
26
27
test('activates on prepare', () => {
28
const activate = stub(extService, 'activateByEvent').returns(Promise.resolve());
29
m.prepare('foo');
30
m.prepare('foo');
31
m.prepare('foo');
32
33
assert.deepStrictEqual(activate.args, [['onRenderer:foo']]);
34
});
35
36
test('buffers and then plays events', async () => {
37
stub(extService, 'activateByEvent').returns(Promise.resolve());
38
39
const scoped = m.getScoped('some-editor');
40
scoped.postMessage('foo', 1);
41
scoped.postMessage('foo', 2);
42
assert.deepStrictEqual(sent, []);
43
44
await timeout(0);
45
46
const expected = [
47
{ editorId: 'some-editor', rendererId: 'foo', message: 1 },
48
{ editorId: 'some-editor', rendererId: 'foo', message: 2 }
49
];
50
51
assert.deepStrictEqual(sent, expected);
52
53
scoped.postMessage('foo', 3);
54
55
assert.deepStrictEqual(sent, [
56
...expected,
57
{ editorId: 'some-editor', rendererId: 'foo', message: 3 }
58
]);
59
});
60
});
61
62