feat(tui): add v2 terminal interface
This commit is contained in:
parent
0e2dd4ad15
commit
e6f660fecf
73 changed files with 3028 additions and 2035 deletions
|
|
@ -1,46 +0,0 @@
|
|||
import { describe, expect, test } from "bun:test"
|
||||
import { createDialogSessionListQuery, loadDialogSessionList } from "../../src/component/dialog-session-list"
|
||||
|
||||
describe("dialog session list", () => {
|
||||
test("requests root sessions for the default browse list", () => {
|
||||
expect(createDialogSessionListQuery({ filter: { path: "packages/tui" } })).toEqual({
|
||||
roots: true,
|
||||
limit: 100,
|
||||
path: "packages/tui",
|
||||
})
|
||||
})
|
||||
|
||||
test("requests root sessions for search results", () => {
|
||||
expect(createDialogSessionListQuery({ search: " deploy ", filter: { scope: "project" } })).toEqual({
|
||||
roots: true,
|
||||
limit: 30,
|
||||
search: "deploy",
|
||||
scope: "project",
|
||||
})
|
||||
})
|
||||
|
||||
test("keeps the cache usable while the root request is pending", async () => {
|
||||
let resolve!: (result: { data: string[] }) => void
|
||||
const pending = loadDialogSessionList<string>({
|
||||
filter: {},
|
||||
list: () => new Promise((done) => (resolve = done)),
|
||||
})
|
||||
|
||||
expect(await Promise.race([pending, Promise.resolve("pending")])).toBe("pending")
|
||||
resolve({ data: ["root"] })
|
||||
expect(await pending).toEqual(["root"])
|
||||
})
|
||||
|
||||
test("falls back when the root request returns an error response", async () => {
|
||||
expect(await loadDialogSessionList({ filter: {}, list: async () => ({}) })).toBeUndefined()
|
||||
})
|
||||
|
||||
test("falls back when the root request rejects", async () => {
|
||||
expect(
|
||||
await loadDialogSessionList({
|
||||
filter: {},
|
||||
list: () => Promise.reject(new Error("offline")),
|
||||
}),
|
||||
).toBeUndefined()
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue