budibase/packages/core/test/templateApi.actionsValidati...

121 lines
4.7 KiB
JavaScript
Raw Normal View History

2019-07-15 08:12:52 +02:00
import {validateActions, validateTrigger} from "../src/templateApi/validate";
import {createValidActionsAndTriggers} from "./specHelpers";
describe("templateApi actions validation", () => {
it("should return no errors when all actions are valid", () => {
const {allActions} = createValidActionsAndTriggers();
const result = validateActions(allActions);
expect(result).toEqual([]);
});
it("should return error for empty behaviourName", () => {
const {allActions, logMessage} = createValidActionsAndTriggers();
logMessage.behaviourName = "";
const result = validateActions(allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("behaviourName");
});
it("should return error for empty behaviourSource", () => {
const {allActions, logMessage} = createValidActionsAndTriggers();
logMessage.behaviourSource = "";
const result = validateActions(allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("behaviourSource");
});
it("should return error for empty name", () => {
const {allActions, logMessage} = createValidActionsAndTriggers();
logMessage.name = "";
const result = validateActions(allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("name");
});
it("should return error for duplicate name", () => {
const {allActions, logMessage, measureCallTime} = createValidActionsAndTriggers();
logMessage.name = measureCallTime.name;
const result = validateActions(allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("");
});
});
describe("tempalteApi triggers validation", () => {
it("should return error when actionName is empty", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.actionName = "";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("actionName");
});
it("should return error when eventName is empty", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.eventName = "";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("eventName");
});
it("should return error when eventName does not exist in allowed events", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.eventName = "non existant event name";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("eventName");
});
it("should return error when actionName does not exist in supplied actions", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.actionName = "non existent action name";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("actionName");
});
it("should return error when optionsCreator is invalid javascript", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.optionsCreator = "this is nonsense";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("optionsCreator");
});
it("should return error when condition is invalid javascript", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.condition = "this is nonsense";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(1);
expect(result[0].field).toEqual("condition");
});
it("should not return error when condition is empty", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.condition = "";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(0);
});
it("should not return error when optionsCreator is empty", () => {
const {allActions, logOnErrorTrigger} = createValidActionsAndTriggers();
logOnErrorTrigger.optionsCreator = "";
const result = validateTrigger(logOnErrorTrigger, allActions);
expect(result.length).toBe(0);
});
});