UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

189 lines 18.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const createAction_1 = require("../createAction"); describe("createAction", () => { it("Shouldn't error", () => { const action = createAction_1.createAction({ name: "My Action", core: (data) => ({ result: data.join("-") }), }); }); describe("createBinding", () => { it("Should create a default createBinding method", () => { const action = createAction_1.createAction({ name: "My Action", core: (data) => ({ result: data.join("-") }), }); const binding = action.createBinding("yes"); expect(binding.action).toBe(action); expect(binding.data).toBe("yes"); const subscribableBinding = action.createBinding({ subscribableData: () => "yes", }); expect(subscribableBinding.action).toBe(action); expect(subscribableBinding.subscribableData()).toBe("yes"); }); it("Should allow the createBinding method to be overridden", () => { const action = createAction_1.createAction({ name: "My Action", core: (data) => ({ result: data.join("-") }), createBinding: function (data) { return { action: this, data }; }, }); const binding = action.createBinding({ a1: true, a2: false }); expect(binding.action).toBe(action); expect(binding.data).toEqual({ a1: true, a2: false }); // The below isn't allowed, and will result in an error on a2 when the comment is removed /** @ts-expect-error */ const binding2 = action.createBinding({ a1: true, a2: "true" }); }); }); describe("get", () => { it("Should correctly reduce the result of multiple bindings and handlers", () => { /** * stringAction <━━ stringActionHandler <━━ stringActionHandlerHandler * ∧ * ┕━━━━━━━┓ * numberAction <━━ stringNumberActionHandler */ const stringAction = createAction_1.createAction({ name: "StringAction", core: (data) => ({ result: data.join("-") }), }); const numberAction = createAction_1.createAction({ name: "numberAction", core: (data) => ({ result: data.reduce((a, b) => a * b) }), }); const stringActionHandler = createAction_1.createAction({ name: "stringActionHandler", parents: [stringAction], core: (data) => ({ result: data.join("*"), children: [stringAction.createBinding(data.join("*"))], }), }); const stringNumberActionHandler = createAction_1.createAction({ name: "stringNumberActionHandler", parents: [stringAction, numberAction], core: (data) => { const val = data.reduce((a, b) => a + b); return { result: val, children: [ stringAction.createBinding(data.join("+")), numberAction.createBinding(val), ], }; }, }); const stringActionHandlerHandler = createAction_1.createAction({ name: "stringActionHandlerHandler", parents: [stringActionHandler], core: (data) => ({ children: data.map(val => stringActionHandler.createBinding(`(${val})`)), }), }); const targets = [ { actionBindings: [ stringAction.createBinding("hoi"), numberAction.createBinding(5), stringNumberActionHandler.createBinding(3), ], }, { actionBindings: [ stringActionHandlerHandler.createBinding("stuffs"), stringNumberActionHandler.createBinding(8), stringActionHandler.createBinding("orange"), ], }, ]; expect(stringAction.get(targets)).toEqual("hoi-3+8-(stuffs)*orange"); expect(stringActionHandler.get(targets)).toEqual("(stuffs)*orange"); expect(numberAction.get(targets)).toEqual(55); // 5 * (3 + 8) // n should be of type never const n = stringActionHandlerHandler.get(targets); }); it("Should correctly reduce the result of multiple bindings and handlers test 2", () => { /** * ┍━━━━ listDashHandler * │ * ∨ * list <━━ listBulletPointHandler <━━ specialListItemsHandler * ∧ * │ * names <━━ namesAndBulletPointListHandler */ const names = createAction_1.createAction({ name: "names", core: (names) => ({ result: names }), }); const list = createAction_1.createAction({ name: "list", core: (names) => { const namesString = names.join("\n"); return { result: namesString }; }, }); const listBulletPointHandler = createAction_1.createAction({ name: "listBulletPointHandler", parents: [list], core: (names, indices) => { const bulletPointNames = names.map(name => `• ${name}`); return { children: bulletPointNames.map(bulletPointName => list.createBinding({ data: bulletPointName, index: indices[0] })), result: bulletPointNames, }; }, }); const listDashHandler = createAction_1.createAction({ name: "listDashHandler", parents: [list], core: (names) => { const bulletPointNames = names.map(name => `- ${name}`); return { children: bulletPointNames.map(bulletPointName => list.createBinding(bulletPointName)), result: bulletPointNames, }; }, }); const specialListItemsHandler = createAction_1.createAction({ name: "specialListItemsHandler", parents: [listBulletPointHandler], core: (names) => { const bulletPointNames = names.map(name => ` * ${name}`); const specialList = ["special:", ...bulletPointNames].join("\n"); return { children: [listBulletPointHandler.createBinding(specialList)], }; }, }); const namesAndBulletPointListHandler = createAction_1.createAction({ name: "namesAndBulletPointListHandler", parents: [names, listBulletPointHandler], core: (inpNames) => ({ children: [ ...inpNames.map(name => listBulletPointHandler.createBinding(name)), ...inpNames.map(name => names.createBinding(name)), ], }), }); const items = [ { actionBindings: [listDashHandler.createBinding("item1")] }, { actionBindings: [listBulletPointHandler.createBinding("item2")] }, { actionBindings: [specialListItemsHandler.createBinding("item3")] }, { actionBindings: [namesAndBulletPointListHandler.createBinding("item4")] }, { actionBindings: [specialListItemsHandler.createBinding("item5")] }, { actionBindings: [listDashHandler.createBinding("item6")] }, { actionBindings: [namesAndBulletPointListHandler.createBinding("item7")] }, ]; const listResult = list.get(items); expect(listResult).toEqual("- item1\n• item2\n• special:\n * item3\n * item5\n• item4\n• item7\n- item6"); const namesResult = names.get(items); expect(namesResult).toEqual(["item4", "item7"]); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvX3Rlc3RzL2NyZWF0ZUFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtEQUE2QztBQUk3QyxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUMxQixFQUFFLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLDJCQUFZLENBQUM7WUFDeEIsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLENBQUMsSUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztTQUN2RCxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzNCLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsTUFBTSxNQUFNLEdBQUcsMkJBQVksQ0FBQztnQkFDeEIsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRSxDQUFDLElBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7YUFDdkQsQ0FBQyxDQUFDO1lBRUgsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUUsT0FBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQzdDLGdCQUFn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