| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 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()
- })
- })
|