Path: blob/main/src/vs/workbench/contrib/notebook/test/browser/notebookRendererMessagingService.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 { NullExtensionService } from '../../../../services/extensions/common/extensions.js';6import { stub } from 'sinon';7import { NotebookRendererMessagingService } from '../../browser/services/notebookRendererMessagingServiceImpl.js';8import assert from 'assert';9import { timeout } from '../../../../../base/common/async.js';10import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';1112suite('NotebookRendererMessaging', () => {13let extService: NullExtensionService;14let m: NotebookRendererMessagingService;15let sent: unknown[] = [];1617const ds = ensureNoDisposablesAreLeakedInTestSuite();1819setup(() => {20sent = [];21extService = new NullExtensionService();22m = ds.add(new NotebookRendererMessagingService(extService));23ds.add(m.onShouldPostMessage(e => sent.push(e)));24});2526test('activates on prepare', () => {27const activate = stub(extService, 'activateByEvent').returns(Promise.resolve());28m.prepare('foo');29m.prepare('foo');30m.prepare('foo');3132assert.deepStrictEqual(activate.args, [['onRenderer:foo']]);33});3435test('buffers and then plays events', async () => {36stub(extService, 'activateByEvent').returns(Promise.resolve());3738const scoped = m.getScoped('some-editor');39scoped.postMessage('foo', 1);40scoped.postMessage('foo', 2);41assert.deepStrictEqual(sent, []);4243await timeout(0);4445const expected = [46{ editorId: 'some-editor', rendererId: 'foo', message: 1 },47{ editorId: 'some-editor', rendererId: 'foo', message: 2 }48];4950assert.deepStrictEqual(sent, expected);5152scoped.postMessage('foo', 3);5354assert.deepStrictEqual(sent, [55...expected,56{ editorId: 'some-editor', rendererId: 'foo', message: 3 }57]);58});59});606162