From 6cc5e9a70d25b1c989a738081110f992099352b5 Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Fri, 31 Mar 2023 07:59:38 -0700 Subject: [PATCH] fix object management dialog's validation issue (#22556) * fix validation issue * make message optional * fix errors --- extensions/data-workspace/src/dialogs/dialogBase.ts | 2 +- .../src/test/dialogs/openExistingDialog.test.ts | 8 ++++---- .../src/objectManagement/ui/objectManagementDialogBase.ts | 4 ++-- src/sql/azdata.d.ts | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/extensions/data-workspace/src/dialogs/dialogBase.ts b/extensions/data-workspace/src/dialogs/dialogBase.ts index 12e9bd1d04..9d8a34c594 100644 --- a/extensions/data-workspace/src/dialogs/dialogBase.ts +++ b/extensions/data-workspace/src/dialogs/dialogBase.ts @@ -69,7 +69,7 @@ export abstract class DialogBase { }; } - public getErrorMessage(): azdataType.window.DialogMessage { + public getErrorMessage(): azdataType.window.DialogMessage | undefined { return this.dialogObject.message; } diff --git a/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts b/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts index 1bdd2c9625..5cfd5114c5 100644 --- a/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts +++ b/extensions/data-workspace/src/test/dialogs/openExistingDialog.test.ts @@ -29,12 +29,12 @@ suite('Open Existing Dialog', function (): void { const validateResult = await dialog.validate(); const msg = constants.FileNotExistError('project', 'nonExistentProjectFile'); - should.equal(dialog.dialogObject.message.text, msg); + 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 should pass because project file exists, but failed with: ${dialog.dialogObject.message.text}`); + should.equal(await dialog.validate(), true, `Validation should pass because project file exists, but failed with: ${dialog.dialogObject.message?.text}`); }); @@ -50,13 +50,13 @@ suite('Open Existing Dialog', function (): void { const validateResult = await dialog.validate(); const msg = constants.CloneParentDirectoryNotExistError(dialog.localClonePathTextBox!.value); - should.equal(dialog.dialogObject.message.text, msg, 'Dialog message should be correct'); + should.equal(dialog.dialogObject.message?.text, msg, 'Dialog message should be correct'); should.equal(validateResult, false, 'Validation should fail because clone directory does not exist, but passed'); // validation should pass if directory exists dialog.localClonePathTextBox!.value = os.tmpdir(); folderExistStub.resolves(true); - should.equal(await dialog.validate(), true, `Validation should pass because clone directory exists, but failed with: ${dialog.dialogObject.message.text}`); + should.equal(await dialog.validate(), true, `Validation should pass because clone directory exists, but failed with: ${dialog.dialogObject.message?.text}`); }); test('project browse', async function (): Promise { diff --git a/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts b/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts index bdaf704e80..54ce9a29e6 100644 --- a/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts +++ b/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts @@ -198,13 +198,13 @@ export abstract class ObjectManagementDialogBase { const errors = await this.validateInput(); - if (errors.length > 0 && (this.dialogObject.message || showErrorMessage)) { + if (errors.length > 0 && (this.dialogObject.message?.text || showErrorMessage)) { this.dialogObject.message = { text: errors.join(EOL), level: azdata.window.MessageLevel.Error }; } else { - this.dialogObject.message = { text: '' }; + this.dialogObject.message = undefined; } return errors.length === 0; } diff --git a/src/sql/azdata.d.ts b/src/sql/azdata.d.ts index 7b52572749..dc5b1393da 100644 --- a/src/sql/azdata.d.ts +++ b/src/sql/azdata.d.ts @@ -4985,7 +4985,7 @@ declare module 'azdata' { * Set the informational message shown in the dialog. Hidden when the message is * undefined or the text is empty or undefined. The default level is error. */ - message: DialogMessage; + message?: DialogMessage; /** * Set the dialog name when opening