@launchmenu/core
Version:
An environment for visual keyboard controlled applets
189 lines • 18.1 kB
JavaScript
"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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