源码快照 @ 2026-09-02 (source-only, 剔除非源码素材)
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { describe, expect, test } from "bun:test";
|
||||
|
||||
import type { SidebarSessionItem } from "../src/app/types";
|
||||
import { flattenSessionRows } from "../src/react-app/domains/session/sidebar/utils";
|
||||
|
||||
const sessions: SidebarSessionItem[] = [
|
||||
{ id: "session-a", title: "Pinned root" },
|
||||
{ id: "session-a-child", title: "Sub-agent child", parentID: "session-a" },
|
||||
{ id: "session-b", title: "Regular root" },
|
||||
];
|
||||
|
||||
describe("sidebar session rows", () => {
|
||||
test("never emits sub-agent (child) sessions", () => {
|
||||
const rows = flattenSessionRows(sessions, Number.MAX_SAFE_INTEGER);
|
||||
|
||||
expect(rows.map((row) => row.session.id)).toEqual(["session-a", "session-b"]);
|
||||
});
|
||||
|
||||
test("selects a pinned root without its descendants", () => {
|
||||
const rows = flattenSessionRows(
|
||||
sessions,
|
||||
1,
|
||||
new Set(["session-a"]),
|
||||
[],
|
||||
{ include: new Set(["session-a"]) },
|
||||
);
|
||||
|
||||
expect(rows.map((row) => row.session.id)).toEqual(["session-a"]);
|
||||
});
|
||||
|
||||
test("removes pinned roots before applying the workspace preview limit", () => {
|
||||
const rows = flattenSessionRows(
|
||||
sessions,
|
||||
1,
|
||||
new Set(),
|
||||
[],
|
||||
{ exclude: new Set(["session-a"]) },
|
||||
);
|
||||
|
||||
expect(rows.map((row) => row.session.id)).toEqual(["session-b"]);
|
||||
});
|
||||
|
||||
test("keeps a child whose parent is outside the list as a root", () => {
|
||||
const orphaned: SidebarSessionItem[] = [
|
||||
{ id: "session-c", title: "Orphan child", parentID: "missing-parent" },
|
||||
];
|
||||
const rows = flattenSessionRows(orphaned, Number.MAX_SAFE_INTEGER);
|
||||
|
||||
expect(rows.map((row) => row.session.id)).toEqual(["session-c"]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user