mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -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;
|
||||
}
|
||||
} 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) {
|
||||
const fileEntry = this.getFileProjectEntry(project, node);
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ export class SqlCmdVariablesTreeItem extends BaseProjectTreeItem {
|
||||
* Represents a SQLCMD variable in a .sqlproj
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import * as sqldbproj from 'sqldbproj';
|
||||
import * as vscode from 'vscode';
|
||||
import * as constants from '../common/constants';
|
||||
import { IconPathHelper } from '../common/iconHelper';
|
||||
import { getDataWorkspaceExtensionApi } from '../common/utils';
|
||||
import { getDataWorkspaceExtensionApi, getSqlProjectsService } from '../common/utils';
|
||||
import { SqlDatabaseProjectTreeViewProvider } from '../controllers/databaseProjectTreeViewProvider';
|
||||
import { ProjectsController } from '../controllers/projectController';
|
||||
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>> {
|
||||
const provider = new SqlDatabaseProjectTreeViewProvider();
|
||||
const project = await Project.openProject(projectFilePath.fsPath);
|
||||
|
||||
// open project in STS
|
||||
const sqlProjectsService = await getSqlProjectsService();
|
||||
await sqlProjectsService.openProject(projectFilePath.fsPath);
|
||||
|
||||
provider.load([project]);
|
||||
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`);
|
||||
});
|
||||
});
|
||||
|
||||
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]> {
|
||||
|
||||
Reference in New Issue
Block a user