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); }); });