55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|||
|
|
import type { Session } from "@opencode-ai/sdk/v2"
|
||
|
|
|
||
|
|
import {
|
||
|
|
areRequestArraysReferentiallyEqual,
|
||
|
|
collectScopedBlockingRequests,
|
||
|
|
} from "./scoped-blocking-requests"
|
||
|
|
|
||
|
|
const session = (id: string, parentID?: string): Session => ({ id, parentID }) as Session
|
||
|
|
|
||
|
|
describe("scoped blocking requests", () => {
|
||
|
|
test("collects requests for the current session subtree", () => {
|
||
|
|
const rootRequest = { id: "perm_root" }
|
||
|
|
const childRequest = { id: "perm_child" }
|
||
|
|
const grandchildRequest = { id: "perm_grandchild" }
|
||
|
|
const siblingRequest = { id: "perm_sibling" }
|
||
|
|
const empty: Array<typeof rootRequest> = []
|
||
|
|
|
||
|
|
const result = collectScopedBlockingRequests(
|
||
|
|
[
|
||
|
|
session("ses_root"),
|
||
|
|
session("ses_child", "ses_root"),
|
||
|
|
session("ses_grandchild", "ses_child"),
|
||
|
|
session("ses_sibling"),
|
||
|
|
],
|
||
|
|
{
|
||
|
|
ses_root: [rootRequest],
|
||
|
|
ses_child: [childRequest],
|
||
|
|
ses_grandchild: [grandchildRequest],
|
||
|
|
ses_sibling: [siblingRequest],
|
||
|
|
},
|
||
|
|
"ses_root",
|
||
|
|
empty,
|
||
|
|
)
|
||
|
|
|
||
|
|
expect(result).toEqual([rootRequest, childRequest, grandchildRequest])
|
||
|
|
})
|
||
|
|
|
||
|
|
test("returns the provided empty array when no scoped requests exist", () => {
|
||
|
|
const empty: Array<{ id: string }> = []
|
||
|
|
|
||
|
|
expect(collectScopedBlockingRequests([session("ses_root")], {}, "ses_root", empty)).toBe(empty)
|
||
|
|
expect(collectScopedBlockingRequests([session("ses_root")], {}, null, empty)).toBe(empty)
|
||
|
|
})
|
||
|
|
|
||
|
|
test("compares request arrays by item identity", () => {
|
||
|
|
const first = { id: "perm_1" }
|
||
|
|
const second = { id: "perm_2" }
|
||
|
|
|
||
|
|
expect(areRequestArraysReferentiallyEqual([first, second], [first, second])).toBe(true)
|
||
|
|
expect(areRequestArraysReferentiallyEqual([first, second], [second, first])).toBe(false)
|
||
|
|
expect(areRequestArraysReferentiallyEqual([first], [{ id: "perm_1" }])).toBe(false)
|
||
|
|
})
|
||
|
|
})
|