import { describe, expect, test } from "bun:test" import { resolveKeybindOption, upsertCommandRegistration } from "./command" describe("upsertCommandRegistration", () => { test("replaces keyed registrations", () => { const one = () => [{ id: "one", title: "One" }] const two = () => [{ id: "two", title: "Two" }] const next = upsertCommandRegistration([{ key: "layout", options: one }], { key: "layout", options: two }) expect(next).toHaveLength(1) expect(next[0]?.options).toBe(two) }) test("keeps unkeyed registrations additive", () => { const one = () => [{ id: "one", title: "One" }] const two = () => [{ id: "two", title: "Two" }] const next = upsertCommandRegistration([{ options: one }], { options: two }) expect(next).toHaveLength(2) expect(next[0]?.options).toBe(two) expect(next[1]?.options).toBe(one) }) }) describe("resolveKeybindOption", () => { test("prefers a matching contextual command over the global fallback", () => { const fallback = { id: "tab.close", title: "Close tab" } const contextual = { id: "terminal.close", title: "Close terminal", when: () => true } expect(resolveKeybindOption([fallback, contextual], new KeyboardEvent("keydown"))).toBe(contextual) }) test("uses the global fallback outside the command context", () => { const fallback = { id: "tab.close", title: "Close tab" } const contextual = { id: "terminal.close", title: "Close terminal", when: () => false } expect(resolveKeybindOption([fallback, contextual], new KeyboardEvent("keydown"))).toBe(fallback) }) })