45 lines
1.3 KiB
TypeScript

import { afterEach, describe, expect, it, mock } from "bun:test"
const spawnCalls: string[][] = []
const spawnMock = mock((args: string[]) => {
spawnCalls.push(args)
return { exited: Promise.resolve(0) }
})
describe("applyLayout", () => {
afterEach(() => {
spawnCalls.length = 0
spawnMock.mockClear()
})
it("applies main-vertical with main-pane-width option", async () => {
const { applyLayout } = await import("./layout")
await applyLayout("tmux", "main-vertical", 60, { spawnCommand: spawnMock })
expect(spawnCalls).toEqual([
["tmux", "select-layout", "main-vertical"],
["tmux", "set-window-option", "main-pane-width", "60%"],
])
})
it("applies main-horizontal with main-pane-height option", async () => {
const { applyLayout } = await import("./layout")
await applyLayout("tmux", "main-horizontal", 55, { spawnCommand: spawnMock })
expect(spawnCalls).toEqual([
["tmux", "select-layout", "main-horizontal"],
["tmux", "set-window-option", "main-pane-height", "55%"],
])
})
it("does not set main pane option for non-main layouts", async () => {
const { applyLayout } = await import("./layout")
await applyLayout("tmux", "tiled", 50, { spawnCommand: spawnMock })
expect(spawnCalls).toEqual([["tmux", "select-layout", "tiled"]])
})
})