diff --git a/extensions/dacpac/coverageConfig.json b/extensions/dacpac/coverageConfig.json index f461a00224..1466314f81 100644 --- a/extensions/dacpac/coverageConfig.json +++ b/extensions/dacpac/coverageConfig.json @@ -3,7 +3,8 @@ "relativeSourcePath": "..", "relativeCoverageDir": "../../coverage", "ignorePatterns": [ - "**/node_modules/**" + "**/node_modules/**", + "extension.js" ], "reports": [ "cobertura" diff --git a/extensions/dacpac/package.json b/extensions/dacpac/package.json index e626bda3ec..1f945f4763 100644 --- a/extensions/dacpac/package.json +++ b/extensions/dacpac/package.json @@ -15,7 +15,7 @@ "activationEvents": [ "onCommand:dacFx.start" ], - "main": "./out/main", + "main": "./out/extension", "repository": { "type": "git", "url": "https://github.com/Microsoft/azuredatastudio.git" diff --git a/extensions/dacpac/src/controllers/mainController.ts b/extensions/dacpac/src/controllers/mainController.ts deleted file mode 100644 index 3654e09ab7..0000000000 --- a/extensions/dacpac/src/controllers/mainController.ts +++ /dev/null @@ -1,37 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as azdata from 'azdata'; -import * as vscode from 'vscode'; -import { DataTierApplicationWizard } from '../wizard/dataTierApplicationWizard'; - -/** - * The main controller class that initializes the extension - */ -export default class MainController implements vscode.Disposable { - - public constructor(private context: vscode.ExtensionContext) { - } - - public deactivate(): void { - } - - public activate(): Promise { - this.initializeDacFxWizard(); - return Promise.resolve(true); - } - - private initializeDacFxWizard() { - azdata.tasks.registerTask('dacFx.start', (profile: azdata.IConnectionProfile, ...args: any[]) => new DataTierApplicationWizard().start(profile, args)); - } - - public get extensionContext(): vscode.ExtensionContext { - return this.context; - } - - public dispose(): void { - this.deactivate(); - } -} diff --git a/extensions/schema-compare/src/main.ts b/extensions/dacpac/src/extension.ts similarity index 52% rename from extensions/schema-compare/src/main.ts rename to extensions/dacpac/src/extension.ts index 12d94c1def..a50d81cb63 100644 --- a/extensions/schema-compare/src/main.ts +++ b/extensions/dacpac/src/extension.ts @@ -3,23 +3,13 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as azdata from 'azdata'; import * as vscode from 'vscode'; -import MainController from './controllers/mainController'; -import { ApiWrapper } from './common/apiWrapper'; +import { DataTierApplicationWizard } from './wizard/dataTierApplicationWizard'; -let controllers: MainController[] = []; - -export async function activate(context: vscode.ExtensionContext): Promise { - // Start the main controller - let mainController = new MainController(context, new ApiWrapper()); - controllers.push(mainController); - context.subscriptions.push(mainController); - - await mainController.activate(); +export async function activate(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('dacFx.start', (profile: azdata.IConnectionProfile, ...args: any[]) => new DataTierApplicationWizard().start(profile, args)); } export function deactivate(): void { - for (let controller of controllers) { - controller.deactivate(); - } } diff --git a/extensions/dacpac/src/main.ts b/extensions/dacpac/src/main.ts deleted file mode 100644 index a72d42255f..0000000000 --- a/extensions/dacpac/src/main.ts +++ /dev/null @@ -1,35 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * 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 MainController from './controllers/mainController'; - -let controllers: MainController[] = []; - -export function activate(context: vscode.ExtensionContext) { - let activations: Promise[] = []; - - // Start the main controller - let mainController = new MainController(context); - controllers.push(mainController); - context.subscriptions.push(mainController); - activations.push(mainController.activate()); - - return Promise.all(activations) - .then((results: boolean[]) => { - for (let result of results) { - if (!result) { - return false; - } - } - return true; - }); -} - -export function deactivate() { - for (let controller of controllers) { - controller.deactivate(); - } -} diff --git a/extensions/dacpac/src/test/mainController.test.ts b/extensions/dacpac/src/test/mainController.test.ts deleted file mode 100644 index d158a624bf..0000000000 --- a/extensions/dacpac/src/test/mainController.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as should from 'should'; -import MainController from '../controllers/mainController'; -import { TestContext, createContext } from './testContext'; - -let testContext: TestContext; - -function createController(): MainController { - let controller = new MainController(testContext.context); - return controller; -} - -describe('MainController', function (): void { - before(async function (): Promise { - testContext = createContext(); - }); - - it('Should create new instance successfully', async function (): Promise { - let controller: MainController; - should.doesNotThrow(() => controller = createController()); - should.notEqual(controller.extensionContext, undefined); - }); - -}); diff --git a/extensions/schema-compare/coverConfig.json b/extensions/schema-compare/coverConfig.json index 7c935463c5..cc3ae238fa 100644 --- a/extensions/schema-compare/coverConfig.json +++ b/extensions/schema-compare/coverConfig.json @@ -4,7 +4,8 @@ "relativeCoverageDir": "../../coverage", "ignorePatterns": [ "**/node_modules/**", - "**/test/**" + "**/test/**", + "extension.js" ], "reports": [ "cobertura", diff --git a/extensions/schema-compare/package.json b/extensions/schema-compare/package.json index 2eba0cf80b..d3cbb13766 100644 --- a/extensions/schema-compare/package.json +++ b/extensions/schema-compare/package.json @@ -15,7 +15,7 @@ "activationEvents": [ "onCommand:schemaCompare.start" ], - "main": "./out/main", + "main": "./out/extension", "repository": { "type": "git", "url": "https://github.com/Microsoft/azuredatastudio.git" diff --git a/extensions/schema-compare/src/controllers/mainController.ts b/extensions/schema-compare/src/controllers/mainController.ts deleted file mode 100644 index 592198afc8..0000000000 --- a/extensions/schema-compare/src/controllers/mainController.ts +++ /dev/null @@ -1,39 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Disposable, ExtensionContext } from 'vscode'; -import { SchemaCompareMainWindow } from '../schemaCompareMainWindow'; -import { ApiWrapper } from '../common/apiWrapper'; - -/** - * The main controller class that initializes the extension - */ -export default class MainController implements Disposable { - protected schemaCompareMainWindow: SchemaCompareMainWindow; - - public constructor(private context: ExtensionContext, private apiWrapper: ApiWrapper) { - this.schemaCompareMainWindow = new SchemaCompareMainWindow(this.apiWrapper, null, this.extensionContext); - } - - public get extensionContext(): ExtensionContext { - return this.context; - } - - public deactivate(): void { - } - - public activate(): Promise { - this.initializeSchemaCompareDialog(); - return Promise.resolve(true); - } - - private initializeSchemaCompareDialog(): void { - this.apiWrapper.registerCommand('schemaCompare.start', async (context: any) => { await this.schemaCompareMainWindow.start(context); }); - } - - public dispose(): void { - this.deactivate(); - } -} diff --git a/extensions/schema-compare/src/extension.ts b/extensions/schema-compare/src/extension.ts new file mode 100644 index 0000000000..a22de88891 --- /dev/null +++ b/extensions/schema-compare/src/extension.ts @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * 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 { ApiWrapper } from './common/apiWrapper'; +import { SchemaCompareMainWindow } from './schemaCompareMainWindow'; + +export async function activate(extensionContext: vscode.ExtensionContext): Promise { + vscode.commands.registerCommand('schemaCompare.start', async (context: any) => { await new SchemaCompareMainWindow(new ApiWrapper(), undefined, extensionContext).start(context); }); +} + +export function deactivate(): void { +} diff --git a/extensions/sql-database-projects/coverConfig.json b/extensions/sql-database-projects/coverConfig.json index 7c935463c5..cc3ae238fa 100644 --- a/extensions/sql-database-projects/coverConfig.json +++ b/extensions/sql-database-projects/coverConfig.json @@ -4,7 +4,8 @@ "relativeCoverageDir": "../../coverage", "ignorePatterns": [ "**/node_modules/**", - "**/test/**" + "**/test/**", + "extension.js" ], "reports": [ "cobertura", diff --git a/extensions/sql-database-projects/src/test/mainController.test.ts b/extensions/sql-database-projects/src/test/mainController.test.ts index 92d7dc4ae7..7f24e33b71 100644 --- a/extensions/sql-database-projects/src/test/mainController.test.ts +++ b/extensions/sql-database-projects/src/test/mainController.test.ts @@ -65,4 +65,16 @@ describe('MainController: main controller operations', function (): void { const controller = new MainController(testContext.context, testContext.apiWrapper.object); await shouldThrowSpecificError(async () => await controller.createNewProject(), constants.projectLocationRequired); }); + + it('Should create new instance without error', async function (): Promise { + should.doesNotThrow(() => new MainController(testContext.context, testContext.apiWrapper.object), 'Creating controller should not throw an error'); + }); + + it('Should activate and deactivate without error', async function (): Promise { + let controller = new MainController(testContext.context, testContext.apiWrapper.object); + should.notEqual(controller.extensionContext, undefined); + + should.doesNotThrow(() => controller.activate(), 'activate() should not throw an error'); + should.doesNotThrow(() => controller.dispose(), 'dispose() should not throw an error'); + }); });