mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Hookup sqlcmdvar delete (#22018)
* delete sqlcmd variable working * undo add * add test
This commit is contained in:
@@ -809,7 +809,9 @@ export class ProjectsController {
|
|||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
} else if (node instanceof SqlCmdVariableTreeItem) {
|
} else if (node instanceof SqlCmdVariableTreeItem) {
|
||||||
// TODO: handle deleting sqlcmd var from project after swap
|
const sqlProjectsService = await utils.getSqlProjectsService();
|
||||||
|
const result = await sqlProjectsService.deleteSqlCmdVariable(project.projectFilePath, node.friendlyName);
|
||||||
|
success = result.success;
|
||||||
} else if (node instanceof FileNode || FolderNode) {
|
} else if (node instanceof FileNode || FolderNode) {
|
||||||
const fileEntry = this.getFileProjectEntry(project, node);
|
const fileEntry = this.getFileProjectEntry(project, node);
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ export class SqlCmdVariablesTreeItem extends BaseProjectTreeItem {
|
|||||||
* Represents a SQLCMD variable in a .sqlproj
|
* Represents a SQLCMD variable in a .sqlproj
|
||||||
*/
|
*/
|
||||||
export class SqlCmdVariableTreeItem extends BaseProjectTreeItem {
|
export class SqlCmdVariableTreeItem extends BaseProjectTreeItem {
|
||||||
constructor(private sqlcmdVar: string, sqlprojUri: vscode.Uri, sqlCmdNodeRelativeProjectUri: vscode.Uri) {
|
constructor(private sqlcmdVar: string, sqlCmdNodeRelativeProjectUri: vscode.Uri, sqlprojUri: vscode.Uri,) {
|
||||||
super(vscode.Uri.file(path.join(sqlCmdNodeRelativeProjectUri.fsPath, sqlcmdVar)), sqlprojUri);
|
super(vscode.Uri.file(path.join(sqlCmdNodeRelativeProjectUri.fsPath, sqlcmdVar)), sqlprojUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import * as sqldbproj from 'sqldbproj';
|
|||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
import * as constants from '../common/constants';
|
import * as constants from '../common/constants';
|
||||||
import { IconPathHelper } from '../common/iconHelper';
|
import { IconPathHelper } from '../common/iconHelper';
|
||||||
import { getDataWorkspaceExtensionApi } from '../common/utils';
|
import { getDataWorkspaceExtensionApi, getSqlProjectsService } from '../common/utils';
|
||||||
import { SqlDatabaseProjectTreeViewProvider } from '../controllers/databaseProjectTreeViewProvider';
|
import { SqlDatabaseProjectTreeViewProvider } from '../controllers/databaseProjectTreeViewProvider';
|
||||||
import { ProjectsController } from '../controllers/projectController';
|
import { ProjectsController } from '../controllers/projectController';
|
||||||
import { Project } from '../models/project';
|
import { Project } from '../models/project';
|
||||||
@@ -41,6 +41,11 @@ export class SqlDatabaseProjectProvider implements dataworkspace.IProjectProvide
|
|||||||
public async getProjectTreeDataProvider(projectFilePath: vscode.Uri): Promise<vscode.TreeDataProvider<BaseProjectTreeItem>> {
|
public async getProjectTreeDataProvider(projectFilePath: vscode.Uri): Promise<vscode.TreeDataProvider<BaseProjectTreeItem>> {
|
||||||
const provider = new SqlDatabaseProjectTreeViewProvider();
|
const provider = new SqlDatabaseProjectTreeViewProvider();
|
||||||
const project = await Project.openProject(projectFilePath.fsPath);
|
const project = await Project.openProject(projectFilePath.fsPath);
|
||||||
|
|
||||||
|
// open project in STS
|
||||||
|
const sqlProjectsService = await getSqlProjectsService();
|
||||||
|
await sqlProjectsService.openProject(projectFilePath.fsPath);
|
||||||
|
|
||||||
provider.load([project]);
|
provider.load([project]);
|
||||||
return provider;
|
return provider;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -922,6 +922,34 @@ describe('ProjectsController', function (): void {
|
|||||||
should(proj1.files.find(f => f.relativePath === 'script1.sql') !== undefined).be.true(`The file path should not have been updated when trying to move script1.sql to proj2`);
|
should(proj1.files.find(f => f.relativePath === 'script1.sql') !== undefined).be.true(`The file path should not have been updated when trying to move script1.sql to proj2`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('SqlCmd Variables', function (): void {
|
||||||
|
it('Should delete sqlcmd variable', async function (): Promise<void> {
|
||||||
|
let project = await testUtils.createTestProject(baselines.openSdkStyleSqlProjectBaseline);
|
||||||
|
const sqlProjectsService = await utils.getSqlProjectsService();
|
||||||
|
await sqlProjectsService.openProject(project.projectFilePath);
|
||||||
|
|
||||||
|
const projController = new ProjectsController(testContext.outputChannel);
|
||||||
|
const projRoot = new ProjectRootTreeItem(project);
|
||||||
|
|
||||||
|
should(Object.keys(project.sqlCmdVariables).length).equal(2, 'The project should start with 2 sqlcmd variables');
|
||||||
|
|
||||||
|
sinon.stub(vscode.window, 'showWarningMessage').returns(<any>Promise.resolve('Cancel'));
|
||||||
|
await projController.delete(createWorkspaceTreeItem(projRoot.children.find(x => x.friendlyName === constants.sqlcmdVariablesNodeName)!.children[0]));
|
||||||
|
|
||||||
|
// reload project
|
||||||
|
project = await Project.openProject(project.projectFilePath);
|
||||||
|
should(Object.keys(project.sqlCmdVariables).length).equal(2, 'The project should still have 2 sqlcmd variables if no was selected');
|
||||||
|
|
||||||
|
sinon.restore();
|
||||||
|
sinon.stub(vscode.window, 'showWarningMessage').returns(<any>Promise.resolve('Yes'));
|
||||||
|
await projController.delete(createWorkspaceTreeItem(projRoot.children.find(x => x.friendlyName === constants.sqlcmdVariablesNodeName)!.children[0]));
|
||||||
|
|
||||||
|
// reload project
|
||||||
|
project = await Project.openProject(project.projectFilePath);
|
||||||
|
should(Object.keys(project.sqlCmdVariables).length).equal(1, 'The project should only have 1 sqlcmd variable after deletion');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
async function setupDeleteExcludeTest(proj: Project): Promise<[FileProjectEntry, ProjectRootTreeItem, FileProjectEntry, FileProjectEntry, FileProjectEntry]> {
|
async function setupDeleteExcludeTest(proj: Project): Promise<[FileProjectEntry, ProjectRootTreeItem, FileProjectEntry, FileProjectEntry, FileProjectEntry]> {
|
||||||
|
|||||||
Reference in New Issue
Block a user