summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/global-sync/session-trim.test.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-06 10:02:31 -0600
committerGitHub <[email protected]>2026-02-06 10:02:31 -0600
commit2c58dd6203df7806f57ef6b29672091cb764e871 (patch)
tree10fca96d3098465b497f78e29de8d0a585c4dac3 /packages/app/src/context/global-sync/session-trim.test.ts
parenta4bc883595df9ea0f752079519081bc602408553 (diff)
downloadopencode-2c58dd6203df7806f57ef6b29672091cb764e871.tar.gz
opencode-2c58dd6203df7806f57ef6b29672091cb764e871.zip
chore: refactoring and tests, splitting up files (#12495)
Diffstat (limited to 'packages/app/src/context/global-sync/session-trim.test.ts')
-rw-r--r--packages/app/src/context/global-sync/session-trim.test.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/app/src/context/global-sync/session-trim.test.ts b/packages/app/src/context/global-sync/session-trim.test.ts
new file mode 100644
index 000000000..be12c074b
--- /dev/null
+++ b/packages/app/src/context/global-sync/session-trim.test.ts
@@ -0,0 +1,59 @@
+import { describe, expect, test } from "bun:test"
+import type { PermissionRequest, Session } from "@opencode-ai/sdk/v2/client"
+import { trimSessions } from "./session-trim"
+
+const session = (input: { id: string; parentID?: string; created: number; updated?: number; archived?: number }) =>
+ ({
+ id: input.id,
+ parentID: input.parentID,
+ time: {
+ created: input.created,
+ updated: input.updated,
+ archived: input.archived,
+ },
+ }) as Session
+
+describe("trimSessions", () => {
+ test("keeps base roots and recent roots beyond the limit", () => {
+ const now = 1_000_000
+ const list = [
+ session({ id: "a", created: now - 100_000 }),
+ session({ id: "b", created: now - 90_000 }),
+ session({ id: "c", created: now - 80_000 }),
+ session({ id: "d", created: now - 70_000, updated: now - 1_000 }),
+ session({ id: "e", created: now - 60_000, archived: now - 10 }),
+ ]
+
+ const result = trimSessions(list, { limit: 2, permission: {}, now })
+ expect(result.map((x) => x.id)).toEqual(["a", "b", "c", "d"])
+ })
+
+ test("keeps children when root is kept, permission exists, or child is recent", () => {
+ const now = 1_000_000
+ const list = [
+ session({ id: "root-1", created: now - 1000 }),
+ session({ id: "root-2", created: now - 2000 }),
+ session({ id: "z-root", created: now - 30_000_000 }),
+ session({ id: "child-kept-by-root", parentID: "root-1", created: now - 20_000_000 }),
+ session({ id: "child-kept-by-permission", parentID: "z-root", created: now - 20_000_000 }),
+ session({ id: "child-kept-by-recency", parentID: "z-root", created: now - 500 }),
+ session({ id: "child-trimmed", parentID: "z-root", created: now - 20_000_000 }),
+ ]
+
+ const result = trimSessions(list, {
+ limit: 2,
+ permission: {
+ "child-kept-by-permission": [{ id: "perm-1" } as PermissionRequest],
+ },
+ now,
+ })
+
+ expect(result.map((x) => x.id)).toEqual([
+ "child-kept-by-permission",
+ "child-kept-by-recency",
+ "child-kept-by-root",
+ "root-1",
+ "root-2",
+ ])
+ })
+})