From cea55560e8ace1322c80553f15f9df50f60204f1 Mon Sep 17 00:00:00 2001 From: Kim Santiago <31145923+kisantia@users.noreply.github.com> Date: Wed, 3 Mar 2021 10:33:52 -0800 Subject: [PATCH] fix a couple things in create project from db dialog (#14511) --- .../createProjectFromDatabaseDialog.ts | 2 ++ .../src/test/newProjectTool.test.ts | 20 ++++++++++++------- .../src/tools/newProjectTool.ts | 6 +++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseDialog.ts b/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseDialog.ts index 19a3a13c13..6ee4a50d98 100644 --- a/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseDialog.ts +++ b/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseDialog.ts @@ -227,9 +227,11 @@ export class CreateProjectFromDatabaseDialog { // populate database dropdown with the databases for this connection if (connectionId) { + this.sourceDatabaseDropDown!.loading = true; const databaseValues = await azdata.connection.listDatabases(connectionId); this.sourceDatabaseDropDown!.values = databaseValues; + this.sourceDatabaseDropDown!.loading = false; this.connectionId = connectionId; } diff --git a/extensions/sql-database-projects/src/test/newProjectTool.test.ts b/extensions/sql-database-projects/src/test/newProjectTool.test.ts index cab9c66487..77b8a2b2f1 100644 --- a/extensions/sql-database-projects/src/test/newProjectTool.test.ts +++ b/extensions/sql-database-projects/src/test/newProjectTool.test.ts @@ -21,6 +21,8 @@ describe('NewProjectTool: New project tool tests', function (): void { beforeEach(async function () { previousSetting = await vscode.workspace.getConfiguration(projectConfigurationKey)[projectSaveLocationKey]; testFolderPath = await generateTestFolderPath(); + // set the default project folder path to the test folder + await vscode.workspace.getConfiguration(projectConfigurationKey).update(projectSaveLocationKey, testFolderPath, true); const dataWorkspaceMock = TypeMoq.Mock.ofType(); dataWorkspaceMock.setup(x => x.defaultProjectSaveLocation).returns(() => vscode.Uri.file(testFolderPath)); @@ -28,18 +30,17 @@ describe('NewProjectTool: New project tool tests', function (): void { }); afterEach(async function () { + // reset the default project folder path to the previous setting await vscode.workspace.getConfiguration(projectConfigurationKey).update(projectSaveLocationKey, previousSetting, true); sinon.restore(); }); it('Should generate correct default project names', async function (): Promise { - await vscode.workspace.getConfiguration(projectConfigurationKey).update(projectSaveLocationKey, testFolderPath, true); should(newProjectTool.defaultProjectNameNewProj()).equal('DatabaseProject1'); should(newProjectTool.defaultProjectNameFromDb('master')).equal('DatabaseProjectmaster'); }); it('Should auto-increment default project names for new projects', async function (): Promise { - await vscode.workspace.getConfiguration(projectConfigurationKey).update(projectSaveLocationKey, testFolderPath, true); should(newProjectTool.defaultProjectNameNewProj()).equal('DatabaseProject1'); await createTestFile('', 'DatabaseProject1', testFolderPath); @@ -49,14 +50,19 @@ describe('NewProjectTool: New project tool tests', function (): void { should(newProjectTool.defaultProjectNameNewProj()).equal('DatabaseProject3'); }); - it('Should auto-increment default project names for import projects', async function (): Promise { - await vscode.workspace.getConfiguration(projectConfigurationKey).update(projectSaveLocationKey, testFolderPath, true); - should(newProjectTool.defaultProjectNameFromDb("master")).equal('DatabaseProjectmaster'); + it('Should auto-increment default project names for create project for database', async function (): Promise { + should(newProjectTool.defaultProjectNameFromDb('master')).equal('DatabaseProjectmaster'); await createTestFile('', 'DatabaseProjectmaster', testFolderPath); - should(newProjectTool.defaultProjectNameFromDb("master")).equal('DatabaseProjectmaster2'); + should(newProjectTool.defaultProjectNameFromDb('master')).equal('DatabaseProjectmaster2'); await createTestFile('', 'DatabaseProjectmaster2', testFolderPath); - should(newProjectTool.defaultProjectNameFromDb("master")).equal('DatabaseProjectmaster3'); + should(newProjectTool.defaultProjectNameFromDb('master')).equal('DatabaseProjectmaster3'); + }); + + it('Should not return a project name if undefined is passed in ', async function (): Promise { + should(newProjectTool.defaultProjectNameFromDb(undefined)).equal(''); + should(newProjectTool.defaultProjectNameFromDb('')).equal(''); + should(newProjectTool.defaultProjectNameFromDb('test')).equal('DatabaseProjecttest'); }); }); diff --git a/extensions/sql-database-projects/src/tools/newProjectTool.ts b/extensions/sql-database-projects/src/tools/newProjectTool.ts index 0007b4ab61..c5cb97aa7d 100644 --- a/extensions/sql-database-projects/src/tools/newProjectTool.ts +++ b/extensions/sql-database-projects/src/tools/newProjectTool.ts @@ -32,7 +32,11 @@ export function defaultProjectNameNewProj(): string { * * @param dbName the database name to base the default project name off of */ -export function defaultProjectNameFromDb(dbName: string): string { +export function defaultProjectNameFromDb(dbName: string | undefined): string { + if (!dbName) { + return ''; + } + const projectNameStarter = constants.defaultProjectNameStarter + dbName; const defaultLocation = defaultProjectSaveLocation() ?? vscode.Uri.file(os.homedir()); const projectPath: string = path.join(defaultLocation.fsPath, projectNameStarter);