mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-13 23:52:06 +00:00
91 lines
2.1 KiB
TypeScript
91 lines
2.1 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import type { ParsedKey } from "@opentui/core"
|
|
import { createPluginKeybind } from "../../../src/cli/cmd/tui/context/plugin-keybinds"
|
|
|
|
describe("createPluginKeybind", () => {
|
|
const defaults = {
|
|
open: "ctrl+o",
|
|
close: "escape",
|
|
}
|
|
|
|
test("uses defaults when overrides are missing", () => {
|
|
const api = {
|
|
match: () => false,
|
|
print: (key: string) => key,
|
|
}
|
|
const bind = createPluginKeybind(api, defaults)
|
|
|
|
expect(bind.all).toEqual(defaults)
|
|
expect(bind.get("open")).toBe("ctrl+o")
|
|
expect(bind.get("close")).toBe("escape")
|
|
})
|
|
|
|
test("applies valid overrides", () => {
|
|
const api = {
|
|
match: () => false,
|
|
print: (key: string) => key,
|
|
}
|
|
const bind = createPluginKeybind(api, defaults, {
|
|
open: "ctrl+alt+o",
|
|
close: "q",
|
|
})
|
|
|
|
expect(bind.all).toEqual({
|
|
open: "ctrl+alt+o",
|
|
close: "q",
|
|
})
|
|
})
|
|
|
|
test("ignores invalid overrides", () => {
|
|
const api = {
|
|
match: () => false,
|
|
print: (key: string) => key,
|
|
}
|
|
const bind = createPluginKeybind(api, defaults, {
|
|
open: " ",
|
|
close: 1,
|
|
extra: "ctrl+x",
|
|
})
|
|
|
|
expect(bind.all).toEqual(defaults)
|
|
expect(bind.get("extra")).toBe("extra")
|
|
})
|
|
|
|
test("resolves names for match", () => {
|
|
const list: string[] = []
|
|
const api = {
|
|
match: (key: string) => {
|
|
list.push(key)
|
|
return true
|
|
},
|
|
print: (key: string) => key,
|
|
}
|
|
const bind = createPluginKeybind(api, defaults, {
|
|
open: "ctrl+shift+o",
|
|
})
|
|
|
|
bind.match("open", { name: "x" } as ParsedKey)
|
|
bind.match("ctrl+k", { name: "x" } as ParsedKey)
|
|
|
|
expect(list).toEqual(["ctrl+shift+o", "ctrl+k"])
|
|
})
|
|
|
|
test("resolves names for print", () => {
|
|
const list: string[] = []
|
|
const api = {
|
|
match: () => false,
|
|
print: (key: string) => {
|
|
list.push(key)
|
|
return `print:${key}`
|
|
},
|
|
}
|
|
const bind = createPluginKeybind(api, defaults, {
|
|
close: "q",
|
|
})
|
|
|
|
expect(bind.print("close")).toBe("print:q")
|
|
expect(bind.print("ctrl+p")).toBe("print:ctrl+p")
|
|
expect(list).toEqual(["q", "ctrl+p"])
|
|
})
|
|
})
|