MISC: Add key binding feature (#1830)

This commit is contained in:
catloversg
2025-02-28 13:59:12 +07:00
committed by GitHub
parent 3ba89eb388
commit 8ed83f3d37
44 changed files with 1201 additions and 305 deletions
@@ -0,0 +1,58 @@
import { SimplePage } from "../../../src/Enums";
import { assertAndSanitizeKeyBindings } from "../../../src/JsonSchema/JSONSchemaAssertion";
import { JsonSchemaValidator } from "../../../src/JsonSchema/JsonSchemaValidator";
import { DefaultKeyBindings } from "../../../src/utils/KeyBindingUtils";
const sampleKeySetup = {
control: false,
alt: true,
shift: false,
meta: false,
key: "t",
};
describe("Valid", () => {
test("Default key bindings", () => {
expect(JsonSchemaValidator.KeyBindingsSchema(DefaultKeyBindings)).toStrictEqual(true);
});
test("Partial key bindings", () => {
const keyBindings = {
[SimplePage.Terminal]: [sampleKeySetup, null],
};
expect(JsonSchemaValidator.KeyBindingsSchema(keyBindings)).toStrictEqual(true);
});
});
describe("Invalid", () => {
test(`Invalid key setup`, () => {
const keyBindings = {
[SimplePage.Terminal]: [
{
control: false,
alt: true,
shift: false,
meta: false,
},
null,
],
};
expect(JsonSchemaValidator.KeyBindingsSchema(keyBindings)).toStrictEqual(false);
});
test(`Missing key setup`, () => {
const keyBindings = {
[SimplePage.Terminal]: [sampleKeySetup],
};
expect(JsonSchemaValidator.KeyBindingsSchema(keyBindings)).toStrictEqual(false);
});
});
describe("assertAndSanitizeKeyBindings", () => {
test("Unknown properties are removed", () => {
const keyBindings = {
[SimplePage.Terminal]: [sampleKeySetup, null],
UnknownPage: [sampleKeySetup, null],
};
assertAndSanitizeKeyBindings(keyBindings);
expect(keyBindings.UnknownPage).toStrictEqual(undefined);
});
});