95 lines
3.3 KiB
JavaScript
95 lines
3.3 KiB
JavaScript
|
import {createAppDefinitionWithActionsAndTriggers} from "./specHelpers";
|
||
|
import {getAppApis} from "../src";
|
||
|
import {permission} from "../src/authApi/permissions";
|
||
|
|
||
|
describe("actions execute", () => {
|
||
|
|
||
|
it("should successfully execute actions", async () => {
|
||
|
const {emails, app} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
|
||
|
app.actions.sendEmail("an email");
|
||
|
expect(emails).toEqual(["an email"]);
|
||
|
});
|
||
|
|
||
|
it("should successfully execute actions via actions api", async () => {
|
||
|
const {emails, actionsApi} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
|
||
|
actionsApi.execute("sendEmail", "an email");
|
||
|
expect(emails).toEqual(["an email"]);
|
||
|
});
|
||
|
|
||
|
it("should throw error when user user does not have permission", async () => {
|
||
|
const {actionsApi, app} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
app.removePermission(permission.executeAction.get("sendEmail"));
|
||
|
expect(() => actionsApi.execute("sendEmail")).toThrow(/Unauthorized/);
|
||
|
});
|
||
|
|
||
|
it("should not depend on having any other permissions", async () => {
|
||
|
const {actionsApi, app} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
app.withOnlyThisPermission(permission.executeAction.get("sendEmail"));
|
||
|
actionsApi.execute("sendEmail", "am email");
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
describe("triggers execute", () => {
|
||
|
|
||
|
it("should run action when no condition is set", async () => {
|
||
|
const {logs,
|
||
|
templateApi, behaviourSources} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
|
||
|
const {recordApi, withFullAccess} = await getAppApis(
|
||
|
templateApi._storeHandle, behaviourSources);
|
||
|
withFullAccess();
|
||
|
// trigger setup to add to logs on recordApi:save:onError event
|
||
|
const customer = recordApi.getNew("/customers", "customer");
|
||
|
|
||
|
let errCaught;
|
||
|
try {
|
||
|
await recordApi.save(customer);
|
||
|
} catch (e) {
|
||
|
errCaught = e.message;
|
||
|
}
|
||
|
|
||
|
expect(logs).toEqual([errCaught]);
|
||
|
|
||
|
});
|
||
|
|
||
|
it("should run action when condition is met", async () => {
|
||
|
const {call_timers,
|
||
|
templateApi,
|
||
|
behaviourSources} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
|
||
|
const {recordApi, withFullAccess} = await getAppApis(
|
||
|
templateApi._storeHandle, behaviourSources);
|
||
|
withFullAccess();
|
||
|
|
||
|
const customer = recordApi.getNew("/customers", "customer");
|
||
|
customer.surname = "Ledog";
|
||
|
|
||
|
// trigger call_timer set to return 999 all the time, just for test
|
||
|
// trigger set to run for type = customer
|
||
|
await recordApi.save(customer);
|
||
|
|
||
|
expect(call_timers).toEqual([999]);
|
||
|
});
|
||
|
|
||
|
it("should not run action when condition is not met", async () => {
|
||
|
const {call_timers,
|
||
|
templateApi,
|
||
|
behaviourSources} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
|
||
|
const {recordApi, withFullAccess} = await getAppApis(
|
||
|
templateApi._storeHandle, behaviourSources);
|
||
|
withFullAccess();
|
||
|
|
||
|
const partner = recordApi.getNew("/partners", "partner");
|
||
|
|
||
|
// trigger call_timer set to return 999 all the time, just for test
|
||
|
// trigger set to run for type = customer
|
||
|
await recordApi.save(partner);
|
||
|
|
||
|
expect(call_timers).toEqual([]);
|
||
|
});
|
||
|
|
||
|
});
|