diff --git a/backend/package.json b/backend/package.json index 484be07e..de687421 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,7 +5,7 @@ "license": "Apache 2.0", "description": "Provide rich user experience for Yeoman generators using VSCode extension or the browser", "repository": "https://github.com/SAP/yeoman-ui", - "version": "0.0.64", + "version": "0.0.65", "engines": { "vscode": "^1.39.2" }, diff --git a/backend/src/vscode-youi-events.ts b/backend/src/vscode-youi-events.ts index a01f071c..0e9814d0 100644 --- a/backend/src/vscode-youi-events.ts +++ b/backend/src/vscode-youi-events.ts @@ -52,7 +52,7 @@ export class VSCodeYouiEvents implements YouiEvents { VSCodeYouiEvents.installing = false; if (success) { const OpenWorkspace = 'Open in New Workspace'; - const AddToWorkspace = 'Add to Workspace'; + const AddToWorkspace = (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length) ? 'Add to Workspace' : undefined; vscode.window.showInformationMessage('The project has been successfully generated.\nWhat would you like to do with it?', AddToWorkspace, OpenWorkspace).then(selection => { if (selection === OpenWorkspace) { this.executeCommand("vscode.openFolder", targetPath); diff --git a/backend/tests/vscode-youi-events.spec.ts b/backend/tests/vscode-youi-events.spec.ts index 56e50550..8f900571 100644 --- a/backend/tests/vscode-youi-events.spec.ts +++ b/backend/tests/vscode-youi-events.spec.ts @@ -41,13 +41,24 @@ describe('vscode-youi-events unit test', () => { }); describe("doGeneratorDone", () => { - it("on success", () => { + it("on success workspace is open", () => { eventsMock.expects("doClose"); _.set(vscode, "window.showInformationMessage", () => {return Promise.resolve("");}); + _.set(vscode, "workspace.workspaceFolders", []); + _.set(vscode, "workspace.workspaceFolders.length", 1); windowMock.expects("showInformationMessage").withExactArgs('The project has been successfully generated.\nWhat would you like to do with it?', 'Add to Workspace', 'Open in New Workspace').resolves(); events.doGeneratorDone(true, "success message", "testDestinationRoot"); }); + it("on success workspace is closed", () => { + eventsMock.expects("doClose"); + _.set(vscode, "window.showInformationMessage", () => {return Promise.resolve("");}); + _.set(vscode, "workspace.workspaceFolders", undefined); + _.set(vscode, "workspace.workspaceFolders.length", 0); + windowMock.expects("showInformationMessage").withExactArgs('The project has been successfully generated.\nWhat would you like to do with it?', undefined, 'Open in New Workspace').resolves(); + events.doGeneratorDone(true, "success message", "testDestinationRoot"); + }); + it("on failure", () => { eventsMock.expects("doClose"); _.set(vscode, "window.showErrorMessage", () => {return Promise.resolve("");});