From b69572a7c9e5f79ed7c0fb4258c4c4f954b99bec Mon Sep 17 00:00:00 2001 From: Benjin Dubishar Date: Mon, 11 Jan 2021 17:50:34 -0800 Subject: [PATCH] Preserve error messages if workspace validation fails in tests (#13901) * preserving error messages if test fails * change name of var to due scope change --- .../data-workspace/src/dialogs/dialogBase.ts | 20 +++++++++--------- .../src/dialogs/openExistingDialog.ts | 1 - .../test/dialogs/openExistingDialog.test.ts | 21 +++++++++++++------ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/extensions/data-workspace/src/dialogs/dialogBase.ts b/extensions/data-workspace/src/dialogs/dialogBase.ts index c2671daf7f..9980641fd5 100644 --- a/extensions/data-workspace/src/dialogs/dialogBase.ts +++ b/extensions/data-workspace/src/dialogs/dialogBase.ts @@ -17,7 +17,7 @@ interface Deferred { export abstract class DialogBase { protected _toDispose: vscode.Disposable[] = []; - protected _dialogObject: azdata.window.Dialog; + public dialogObject: azdata.window.Dialog; protected initDialogComplete: Deferred | undefined; protected initDialogPromise: Promise = new Promise((resolve, reject) => this.initDialogComplete = { resolve, reject }); protected workspaceDescriptionFormComponent: azdata.FormComponent | undefined; @@ -25,11 +25,11 @@ export abstract class DialogBase { protected workspaceInputFormComponent: azdata.FormComponent | undefined; constructor(dialogTitle: string, dialogName: string, dialogWidth: azdata.window.DialogWidth = 600) { - this._dialogObject = azdata.window.createModelViewDialog(dialogTitle, dialogName, dialogWidth); - this._dialogObject.okButton.label = constants.OkButtonText; - this.register(this._dialogObject.cancelButton.onClick(() => this.onCancelButtonClicked())); - this.register(this._dialogObject.okButton.onClick(() => this.onOkButtonClicked())); - this._dialogObject.registerCloseValidator(async () => { + this.dialogObject = azdata.window.createModelViewDialog(dialogTitle, dialogName, dialogWidth); + this.dialogObject.okButton.label = constants.OkButtonText; + this.register(this.dialogObject.cancelButton.onClick(() => this.onCancelButtonClicked())); + this.register(this.dialogObject.okButton.onClick(() => this.onOkButtonClicked())); + this.dialogObject.registerCloseValidator(async () => { return this.validate(); }); } @@ -43,8 +43,8 @@ export abstract class DialogBase { tab.registerContent(async (view: azdata.ModelView) => { return this.initialize(view); }); - this._dialogObject.content = [tab]; - azdata.window.openDialog(this._dialogObject); + this.dialogObject.content = [tab]; + azdata.window.openDialog(this.dialogObject); await this.initDialogPromise; } @@ -69,14 +69,14 @@ export abstract class DialogBase { } protected showErrorMessage(message: string): void { - this._dialogObject.message = { + this.dialogObject.message = { text: message, level: azdata.window.MessageLevel.Error }; } public getErrorMessage(): azdata.window.DialogMessage { - return this._dialogObject.message; + return this.dialogObject.message; } protected createHorizontalContainer(view: azdata.ModelView, items: azdata.Component[]): azdata.FlexContainer { diff --git a/extensions/data-workspace/src/dialogs/openExistingDialog.ts b/extensions/data-workspace/src/dialogs/openExistingDialog.ts index 23ae625c65..29b38e3854 100644 --- a/extensions/data-workspace/src/dialogs/openExistingDialog.ts +++ b/extensions/data-workspace/src/dialogs/openExistingDialog.ts @@ -48,7 +48,6 @@ export class OpenExistingDialog extends DialogBase { } catch (err) { this.showErrorMessage(err?.message ? err.message : err); - console.log(err?.message ? err.message : err); return false; } } diff --git a/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts b/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts index 7e59664426..9076339a38 100644 --- a/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts +++ b/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts @@ -26,14 +26,18 @@ suite('Open Existing Dialog', function (): void { await dialog.open(); dialog._targetTypeRadioCardGroup?.updateProperty( 'selectedCardId', constants.Project); - dialog._filePathTextBox!.value = ''; + dialog._filePathTextBox!.value = 'nonExistentProjectFile'; dialog.workspaceInputBox!.value = 'test.code-workspace'; - should.equal(await dialog.validate(), false, 'Validation fail because project file does not exist'); + const validateResult = await dialog.validate(); + + const msg = constants.FileNotExistError('project', 'nonExistentProjectFile'); + should.equal(dialog.dialogObject.message.text, msg); + should.equal(validateResult, false, 'Validation should fail because project file does not exist, but passed'); // create a project file dialog._filePathTextBox!.value = await createProjectFile('testproj'); - should.equal(await dialog.validate(), true, 'Validation pass because project file exists'); + should.equal(await dialog.validate(), true, `Validation should pass because project file exists, but failed with: ${dialog.dialogObject.message.text}`); }); test('Should validate workspace file exists', async function (): Promise { @@ -42,13 +46,18 @@ suite('Open Existing Dialog', function (): void { await dialog.open(); dialog._targetTypeRadioCardGroup?.updateProperty( 'selectedCardId', constants.Workspace); - dialog._filePathTextBox!.value = ''; - should.equal(await dialog.validate(), false, 'Validation fail because workspace file does not exist'); + dialog._filePathTextBox!.value = 'nonExistentWorkspaceFile'; + + const validateResult = await dialog.validate(); + + const msg = constants.FileNotExistError('workspace', 'nonExistentWorkspaceFile'); + should.equal(dialog.dialogObject.message.text, msg); + should.equal(validateResult, false, 'Validation should fail because workspace file does not exist, but passed'); // create a workspace file dialog._filePathTextBox!.value = generateUniqueWorkspaceFilePath(); await fs.writeFile(dialog._filePathTextBox!.value , ''); - should.equal(await dialog.validate(), true, 'Validation pass because workspace file exists'); + should.equal(await dialog.validate(), true, `Validation should pass because workspace file exists, but failed with: ${dialog.dialogObject.message.text}`); });