Update action run return type (#15568)

* Update action run return type

* fix tests

* Update rest

* Add back null checks
This commit is contained in:
Charles Gagnon
2021-05-25 14:52:39 -07:00
committed by GitHub
parent 25352fa39c
commit 399406b732
29 changed files with 379 additions and 637 deletions

View File

@@ -60,7 +60,7 @@ abstract class AsmtServerAction extends Action {
super(id, label, TARGET_ICON_CLASS[AssessmentTargetType.Server]);
}
public async run(context: IAsmtActionInfo): Promise<boolean> {
public async run(context: IAsmtActionInfo): Promise<void> {
this._telemetryService.sendActionEvent(TelemetryView.SqlAssessment, this.id);
if (context && context.component && !context.component.isBusy) {
context.component.showProgress(this.asmtType);
@@ -87,11 +87,7 @@ abstract class AsmtServerAction extends Action {
}
context.component.stopProgress(this.asmtType);
return true;
}
return false;
}
abstract getServerItems(ownerUri: string): Thenable<SqlAssessmentResult>;
@@ -137,16 +133,14 @@ export class AsmtDatabaseSelectItemsAction extends Action {
TARGET_ICON_CLASS[AssessmentTargetType.Database]);
}
public async run(context: IAsmtActionInfo): Promise<boolean> {
public async run(context: IAsmtActionInfo): Promise<void> {
this._telemetryService.sendActionEvent(TelemetryView.SqlAssessment, this.id);
if (context && context.component && !context.component.isBusy) {
context.component.showProgress(AssessmentType.AvailableRules);
let dbAsmtResults = await this._assessmentService.getAssessmentItems(context.ownerUri, AssessmentTargetType.Database);
context.component.showInitialResults(dbAsmtResults, AssessmentType.AvailableRules);
context.component.stopProgress(AssessmentType.AvailableRules);
return true;
}
return false;
}
}
@@ -185,16 +179,14 @@ export class AsmtDatabaseInvokeItemsAction extends Action {
TARGET_ICON_CLASS[AssessmentTargetType.Database]);
}
public async run(context: IAsmtActionInfo): Promise<boolean> {
public async run(context: IAsmtActionInfo): Promise<void> {
this._telemetryService.sendActionEvent(TelemetryView.SqlAssessment, this.id);
if (context && context.component && !context.component.isBusy) {
context.component.showProgress(AssessmentType.InvokeAssessment);
let dbAsmtResults = await this._assessmentService.assessmentInvoke(context.ownerUri, AssessmentTargetType.Database);
context.component.showInitialResults(dbAsmtResults, AssessmentType.InvokeAssessment);
context.component.stopProgress(AssessmentType.InvokeAssessment);
return true;
}
return false;
}
}
@@ -209,14 +201,12 @@ export class AsmtExportAsScriptAction extends Action {
super(AsmtExportAsScriptAction.ID, AsmtExportAsScriptAction.LABEL, 'exportAsScriptIcon');
}
public async run(context: IAsmtActionInfo): Promise<boolean> {
public async run(context: IAsmtActionInfo): Promise<void> {
this._telemetryService.sendActionEvent(TelemetryView.SqlAssessment, AsmtExportAsScriptAction.ID);
const items = context?.component?.recentResult?.result.items;
if (items) {
await this._assessmentService.generateAssessmentScript(context.ownerUri, items);
return true;
}
return false;
}
}
@@ -234,9 +224,9 @@ export class AsmtSamplesLinkAction extends Action {
super(AsmtSamplesLinkAction.ID, AsmtSamplesLinkAction.LABEL, AsmtSamplesLinkAction.ICON);
}
public async run(): Promise<boolean> {
public async run(): Promise<void> {
this._telemetryService.sendActionEvent(TelemetryView.SqlAssessment, AsmtSamplesLinkAction.ID);
return this._openerService.open(URI.parse(AsmtSamplesLinkAction.configHelpUri));
await this._openerService.open(URI.parse(AsmtSamplesLinkAction.configHelpUri));
}
}
@@ -262,12 +252,12 @@ export class AsmtGenerateHTMLReportAction extends Action {
return URI.file(filePath);
}
public async run(context: IAsmtActionInfo): Promise<boolean> {
public async run(context: IAsmtActionInfo): Promise<void> {
context.component.showProgress(AssessmentType.ReportGeneration);
const choosenPath = await this._fileDialogService.pickFileToSave(this.suggestReportFile(context.component.recentResult.dateUpdated));
context.component.stopProgress(AssessmentType.ReportGeneration);
if (!choosenPath) {
return false;
return;
}
this._telemetryService.sendActionEvent(TelemetryView.SqlAssessment, AsmtGenerateHTMLReportAction.ID);
@@ -291,7 +281,6 @@ export class AsmtGenerateHTMLReportAction extends Action {
run: () => { }
}]);
}
return true;
}
}

View File

@@ -137,8 +137,7 @@ suite('Assessment Actions', () => {
assert.equal(action.id, AsmtServerSelectItemsAction.ID, 'Get Server Rules id action mismatch');
assert.equal(action.label, AsmtServerSelectItemsAction.LABEL, 'Get Server Rules label action mismatch');
let result = await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
assert.ok(result, 'Get Server Rules action should succeed');
await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
mockAsmtViewComponent.verify(s => s.showProgress(AssessmentType.AvailableRules), TypeMoq.Times.once());
mockAssessmentService.verify(s => s.getAssessmentItems(TypeMoq.It.isAny(), AssessmentTargetType.Server), TypeMoq.Times.once());
mockAsmtViewComponent.verify(s => s.showInitialResults(TypeMoq.It.isAny(), AssessmentType.AvailableRules), TypeMoq.Times.once());
@@ -161,8 +160,7 @@ suite('Assessment Actions', () => {
assert.equal(action.id, AsmtServerInvokeItemsAction.ID, 'Invoke Server Assessment id action mismatch');
assert.equal(action.label, AsmtServerInvokeItemsAction.LABEL, 'Invoke Server Assessment label action mismatch');
let result = await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
assert.ok(result, 'Invoke Server Assessment action should succeed');
await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
mockAsmtViewComponent.verify(s => s.showProgress(AssessmentType.InvokeAssessment), TypeMoq.Times.once());
mockAssessmentService.verify(s => s.assessmentInvoke(TypeMoq.It.isAny(), AssessmentTargetType.Server), TypeMoq.Times.once());
mockAsmtViewComponent.verify(s => s.showInitialResults(TypeMoq.It.isAny(), AssessmentType.InvokeAssessment), TypeMoq.Times.once());
@@ -177,8 +175,7 @@ suite('Assessment Actions', () => {
const action = new AsmtDatabaseSelectItemsAction('databaseName', mockAssessmentService.object, new NullAdsTelemetryService());
assert.equal(action.id, AsmtDatabaseSelectItemsAction.ID, 'Get Database Rules id action mismatch');
let result = await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
assert.ok(result, 'Get Assessment Database action should succeed');
await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
mockAsmtViewComponent.verify(s => s.showProgress(AssessmentType.AvailableRules), TypeMoq.Times.once());
mockAsmtViewComponent.verify(s => s.showInitialResults(TypeMoq.It.isAny(), AssessmentType.AvailableRules), TypeMoq.Times.once());
mockAsmtViewComponent.verify(s => s.stopProgress(AssessmentType.AvailableRules), TypeMoq.Times.once());
@@ -190,8 +187,7 @@ suite('Assessment Actions', () => {
const action = new AsmtDatabaseInvokeItemsAction('databaseName', mockAssessmentService.object, new NullAdsTelemetryService());
assert.equal(action.id, AsmtDatabaseInvokeItemsAction.ID, 'Invoke Database Assessment id action mismatch');
let result = await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
assert.ok(result, 'Invoke Database Assessment action should succeed');
await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
mockAsmtViewComponent.verify(s => s.showProgress(AssessmentType.InvokeAssessment), TypeMoq.Times.once());
mockAsmtViewComponent.verify(s => s.showInitialResults(TypeMoq.It.isAny(), AssessmentType.InvokeAssessment), TypeMoq.Times.once());
mockAsmtViewComponent.verify(s => s.stopProgress(AssessmentType.InvokeAssessment), TypeMoq.Times.once());
@@ -204,8 +200,7 @@ suite('Assessment Actions', () => {
assert.equal(action.id, AsmtExportAsScriptAction.ID, 'Generate Assessment script id action mismatch');
assert.equal(action.label, AsmtExportAsScriptAction.LABEL, 'Generate Assessment script label action mismatch');
let result = await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
assert.ok(result, 'Generate Script action should succeed');
await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
mockAssessmentService.verify(s => s.generateAssessmentScript(TypeMoq.It.isAnyString(), TypeMoq.It.isAny()), TypeMoq.Times.once());
});
@@ -217,8 +212,7 @@ suite('Assessment Actions', () => {
assert.equal(action.id, AsmtSamplesLinkAction.ID, 'Samples Link id action mismatch');
assert.equal(action.label, AsmtSamplesLinkAction.LABEL, 'Samples Link label action mismatch');
let result = await action.run();
assert.ok(result, 'Samples Link action should succeed');
await action.run();
openerService.verify(s => s.open(TypeMoq.It.isAny()), TypeMoq.Times.once());
});
@@ -259,8 +253,7 @@ suite('Assessment Actions', () => {
assert.equal(action.id, AsmtGenerateHTMLReportAction.ID, 'Generate HTML Report id action mismatch');
assert.equal(action.label, AsmtGenerateHTMLReportAction.LABEL, 'Generate HTML Report label action mismatch');
let result = await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
assert.ok(result, 'Generate HTML Report action should succeed');
await action.run({ ownerUri: '', component: mockAsmtViewComponent.object, connectionId: '' });
notificationService.verify(s => s.prompt(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny()), TypeMoq.Times.once());
});
});