From 7080e3ec4ec8a35fa670a4519f554382b8eff597 Mon Sep 17 00:00:00 2001 From: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com> Date: Tue, 23 Jun 2020 23:08:25 -0700 Subject: [PATCH] Notebooks: Add Some Jupyter Controller Tests (#11053) * First jupyter controller tests * PR comments * remove unnecessary checks for throw * fix comment typo --- .../src/test/model/jupyterController.test.ts | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 extensions/notebook/src/test/model/jupyterController.test.ts diff --git a/extensions/notebook/src/test/model/jupyterController.test.ts b/extensions/notebook/src/test/model/jupyterController.test.ts new file mode 100644 index 0000000000..82ffb97f8e --- /dev/null +++ b/extensions/notebook/src/test/model/jupyterController.test.ts @@ -0,0 +1,53 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as should from 'should'; +import * as TypeMoq from 'typemoq'; + +import { ApiWrapper } from '../../common/apiWrapper'; +import { AppContext } from '../../common/appContext'; +import { JupyterController } from '../../jupyter/jupyterController'; +import { LocalPipPackageManageProvider } from '../../jupyter/localPipPackageManageProvider'; +import { MockExtensionContext } from '../common/stubs'; + +describe('JupyterController tests', function () { + let mockExtensionContext: vscode.ExtensionContext; + let appContext: AppContext; + let controller: JupyterController; + let mockApiWrapper: TypeMoq.IMock; + + this.beforeAll(() => { + mockExtensionContext = new MockExtensionContext(); + mockApiWrapper = TypeMoq.Mock.ofType(); + appContext = new AppContext(mockExtensionContext, mockApiWrapper.object); + }); + + this.beforeEach(() => { + controller = new JupyterController(appContext); + }); + + it('should activate new JupyterController successfully', async () => { + should(controller.extensionContext).deepEqual(appContext.extensionContext, 'Extension context should be passed through'); + await should(controller.activate()).not.be.rejected(); + // On activation, local pip and local conda package providers should exist + should(controller.packageManageProviders.size).equal(2, 'Local pip and conda package providers should be default providers'); + }); + + it('should create new packageManageProvider successfully', async () => { + should(controller.packageManageProviders.size).equal(0, 'No package manage providers should exist before activate'); + let mockProvider = TypeMoq.Mock.ofType(LocalPipPackageManageProvider); + controller.registerPackageManager('provider1', mockProvider.object); + should(controller.packageManageProviders.size).equal(1, 'Package manage providers should equal 1 after one provider added'); + }); + + it('should throw when same packageManageProvider added twice', async () => { + let mockProvider = TypeMoq.Mock.ofType(LocalPipPackageManageProvider); + controller.registerPackageManager('provider1', mockProvider.object); + should(controller.packageManageProviders.size).equal(1, 'Package manage providers should equal 1 after one provider added'); + should.throws(() => controller.registerPackageManager('provider1', mockProvider.object)); + should(controller.packageManageProviders.size).equal(1, 'Package manage providers should still equal 1'); + }); +});