Archived
Hide installation options in Configure Python wizard if python is already setup. (#10635)
This commit is contained in:
@@ -337,6 +337,45 @@ class TestFormContainer extends TestComponentBase implements azdata.FormContaine
|
||||
}
|
||||
}
|
||||
|
||||
class TestDivContainer extends TestComponentBase implements azdata.DivContainer {
|
||||
onDidClick: vscode.Event<any>;
|
||||
items: azdata.Component[] = [];
|
||||
clearItems(): void {
|
||||
}
|
||||
addItems(itemConfigs: azdata.Component[], itemLayout?: azdata.DivItemLayout): void {
|
||||
}
|
||||
addItem(component: azdata.Component, itemLayout?: azdata.DivItemLayout): void {
|
||||
}
|
||||
insertItem(component: azdata.Component, index: number, itemLayout?: azdata.DivItemLayout): void {
|
||||
}
|
||||
removeItem(component: azdata.Component): boolean {
|
||||
return true;
|
||||
}
|
||||
setLayout(layout: azdata.DivLayout): void {
|
||||
}
|
||||
setItemLayout(component: azdata.Component, layout: azdata.DivItemLayout): void {
|
||||
}
|
||||
}
|
||||
|
||||
class TestFlexContainer extends TestComponentBase implements azdata.FlexContainer {
|
||||
items: azdata.Component[] = [];
|
||||
clearItems(): void {
|
||||
}
|
||||
addItems(itemConfigs: azdata.Component[], itemLayout?: azdata.FlexItemLayout): void {
|
||||
}
|
||||
addItem(component: azdata.Component, itemLayout?: azdata.FlexItemLayout): void {
|
||||
}
|
||||
insertItem(component: azdata.Component, index: number, itemLayout?: azdata.FlexItemLayout): void {
|
||||
}
|
||||
removeItem(component: azdata.Component): boolean {
|
||||
return true;
|
||||
}
|
||||
setLayout(layout: azdata.FlexLayout): void {
|
||||
}
|
||||
setItemLayout(component: azdata.Component, layout: azdata.FlexItemLayout): void {
|
||||
}
|
||||
}
|
||||
|
||||
class TestComponentBuilder<T extends azdata.Component> implements azdata.ComponentBuilder<T> {
|
||||
constructor(private _component: T) {
|
||||
}
|
||||
@@ -383,6 +422,34 @@ export function createViewContext(): TestContext {
|
||||
withLayout: () => formBuilder
|
||||
});
|
||||
|
||||
let div: azdata.DivContainer = new TestDivContainer();
|
||||
let divBuilder: azdata.DivBuilder = Object.assign({}, {
|
||||
component: () => div,
|
||||
addFormItem: () => { },
|
||||
insertFormItem: () => { },
|
||||
removeFormItem: () => true,
|
||||
addFormItems: () => { },
|
||||
withFormItems: () => divBuilder,
|
||||
withProperties: () => divBuilder,
|
||||
withValidation: () => divBuilder,
|
||||
withItems: () => divBuilder,
|
||||
withLayout: () => divBuilder
|
||||
});
|
||||
|
||||
let flex: azdata.FlexContainer = new TestFlexContainer();
|
||||
let flexBuilder: azdata.FlexBuilder = Object.assign({}, {
|
||||
component: () => flex,
|
||||
addFormItem: () => { },
|
||||
insertFormItem: () => { },
|
||||
removeFormItem: () => true,
|
||||
addFormItems: () => { },
|
||||
withFormItems: () => flexBuilder,
|
||||
withProperties: () => flexBuilder,
|
||||
withValidation: () => flexBuilder,
|
||||
withItems: () => flexBuilder,
|
||||
withLayout: () => flexBuilder
|
||||
});
|
||||
|
||||
let view: azdata.ModelView = {
|
||||
onClosed: undefined!,
|
||||
connection: undefined!,
|
||||
@@ -398,7 +465,9 @@ export function createViewContext(): TestContext {
|
||||
dropDown: () => dropdownBuilder,
|
||||
declarativeTable: () => declarativeTableBuilder,
|
||||
formContainer: () => formBuilder,
|
||||
loadingComponent: () => loadingBuilder
|
||||
loadingComponent: () => loadingBuilder,
|
||||
divContainer: () => divBuilder,
|
||||
flexContainer: () => flexBuilder
|
||||
}
|
||||
};
|
||||
|
||||
@@ -412,4 +481,13 @@ export interface TestContext {
|
||||
view: azdata.ModelView;
|
||||
onClick: vscode.EventEmitter<any>;
|
||||
}
|
||||
|
||||
export class TestButton implements azdata.window.Button {
|
||||
label: string;
|
||||
enabled: boolean;
|
||||
hidden: boolean;
|
||||
constructor(private onClickEmitter: vscode.EventEmitter<void>) {
|
||||
}
|
||||
onClick: vscode.Event<void> = this.onClickEmitter.event;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
@@ -12,7 +12,8 @@ import { ConfigurePathPage } from '../dialog/configurePython/configurePathPage';
|
||||
import * as should from 'should';
|
||||
import { PickPackagesPage } from '../dialog/configurePython/pickPackagesPage';
|
||||
import { python3DisplayName, allKernelsName } from '../common/constants';
|
||||
import { TestContext, createViewContext } from './common';
|
||||
import { TestContext, createViewContext, TestButton } from './common';
|
||||
import { EventEmitter } from 'vscode';
|
||||
|
||||
describe('Configure Python Wizard', function () {
|
||||
let apiWrapper: ApiWrapper = new ApiWrapper();
|
||||
@@ -23,11 +24,20 @@ describe('Configure Python Wizard', function () {
|
||||
beforeEach(() => {
|
||||
let mockInstall = TypeMoq.Mock.ofType(JupyterServerInstallation);
|
||||
mockInstall.setup(i => i.getInstalledPipPackages(TypeMoq.It.isAnyString())).returns(() => Promise.resolve([]));
|
||||
mockInstall.setup(i => i.getRequiredPackagesForKernel(TypeMoq.It.isAnyString())).returns(() => [{ name: 'TestPkg', version: '1.0.0'}]);
|
||||
testInstallation = mockInstall.object;
|
||||
|
||||
let mockWizard = TypeMoq.Mock.ofType(ConfigurePythonWizard);
|
||||
mockWizard.setup(w => w.showErrorMessage(TypeMoq.It.isAnyString()));
|
||||
testWizard = mockWizard.object;
|
||||
let mockDoneButton = new TestButton(new EventEmitter<void>());
|
||||
let mockNextButton = new TestButton(new EventEmitter<void>());
|
||||
|
||||
let mockWizard = TypeMoq.Mock.ofType<azdata.window.Wizard>();
|
||||
mockWizard.setup(w => w.doneButton).returns(() => mockDoneButton);
|
||||
mockWizard.setup(w => w.nextButton).returns(() => mockNextButton);
|
||||
|
||||
let mockPythonWizard = TypeMoq.Mock.ofType(ConfigurePythonWizard);
|
||||
mockPythonWizard.setup(w => w.showErrorMessage(TypeMoq.It.isAnyString()));
|
||||
mockPythonWizard.setup(w => w.wizard).returns(() => mockWizard.object);
|
||||
testWizard = mockPythonWizard.object;
|
||||
|
||||
viewContext = createViewContext();
|
||||
});
|
||||
@@ -82,6 +92,7 @@ describe('Configure Python Wizard', function () {
|
||||
|
||||
// First page, so onPageEnter should do nothing
|
||||
await should(configurePathPage.onPageEnter()).be.resolved();
|
||||
should(testWizard.wizard.nextButton.enabled).be.true();
|
||||
|
||||
should(await configurePathPage.onPageLeave()).be.true();
|
||||
should(model.useExistingPython).be.true();
|
||||
@@ -108,7 +119,8 @@ describe('Configure Python Wizard', function () {
|
||||
should(await pickPackagesPage.onPageLeave()).be.true();
|
||||
|
||||
await should(pickPackagesPage.onPageEnter()).be.resolved();
|
||||
should(model.packagesToInstall).be.deepEqual(JupyterServerInstallation.getRequiredPackagesForKernel(allKernelsName));
|
||||
should(testWizard.wizard.doneButton.enabled).be.true();
|
||||
should(model.packagesToInstall).be.deepEqual(testInstallation.getRequiredPackagesForKernel(allKernelsName));
|
||||
});
|
||||
|
||||
it('Undefined kernel test', async () => {
|
||||
@@ -128,6 +140,6 @@ describe('Configure Python Wizard', function () {
|
||||
should((<any>pickPackagesPage).kernelDropdown).not.be.undefined();
|
||||
|
||||
await should(pickPackagesPage.onPageEnter()).be.resolved();
|
||||
should(model.packagesToInstall).be.deepEqual(JupyterServerInstallation.getRequiredPackagesForKernel(python3DisplayName));
|
||||
should(model.packagesToInstall).be.deepEqual(testInstallation.getRequiredPackagesForKernel(python3DisplayName));
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user