diff --git a/sample-action-client/package.json b/sample-action-client/package.json index 70371eb4..0c2de80b 100644 --- a/sample-action-client/package.json +++ b/sample-action-client/package.json @@ -50,7 +50,7 @@ "package": "vsce package ." }, "devDependencies": { - "@sap-devx/app-studio-toolkit-types": "0.0.5", + "@sap-devx/app-studio-toolkit-types": "0.0.4", "@types/vscode": "^1.40.0", "typescript": "^3.9.7", "vsce": "^1.69.0", diff --git a/src/actions/controller.ts b/src/actions/controller.ts index 3c311ebd..9ca8e4b0 100644 --- a/src/actions/controller.ts +++ b/src/actions/controller.ts @@ -8,7 +8,9 @@ export class ActionsController { public static loadActions() { vscode.extensions.all.forEach((extension) => { if (extension?.packageJSON?.BASContributes?.actions) { - this.actions.push(extension.packageJSON.BASContributes.actions); + (extension.packageJSON.BASContributes.actions as IAction[]).forEach((action) => { + this.actions.push(action); + }); } }); } diff --git a/tests/api.spec.ts b/tests/api.spec.ts index c54e5b7f..efbf7779 100644 --- a/tests/api.spec.ts +++ b/tests/api.spec.ts @@ -5,6 +5,7 @@ import * as _ from "lodash"; import * as sinon from "sinon"; import { IAction, ActionType } from "../src/actions/interfaces"; import { ActionsController } from '../src/actions/controller'; +import * as vscode from "vscode"; use(chaiAsPromised); const extensions = { getExtension: () => {} }; @@ -13,6 +14,7 @@ const testVscode = { }; mockVscode(testVscode, "src/api.ts"); + import { bas } from "../src/api"; describe("api unit test", () => { @@ -77,6 +79,26 @@ describe("api unit test", () => { }); + it("loadActions", async () => { + const action: IAction = { + "id" : "abc123", + "actionType" : ActionType.Command, + } + const allExtensioms = [{ + packageJSON: { + "BASContributes": { + "actions": [action] + }, + } + }] + _.set(vscode, "extensions.all", allExtensioms); + + ActionsController.loadActions(); + const result = await bas.getAction("abc123"); + expect(result.id).to.be.equal(action.id); + expect(result.actionType).to.be.equal(action.actionType); + }); + it("inactive extension is waited for", async () => { const extension = { isActive: false, diff --git a/tests/extension.spec.ts b/tests/extension.spec.ts index 95984b5b..8a72e0a9 100644 --- a/tests/extension.spec.ts +++ b/tests/extension.spec.ts @@ -9,7 +9,7 @@ const testVscode = { extensions: { all: [{ packageJSON: { - BAScontributes: { + BASContributes: { actions: [{ id : "abc123", actionType : "command",