Files
oh-my-opencode/src/tools/call-omo-agent/session-creator.test.ts
T

52 lines
1.6 KiB
TypeScript
Raw Normal View History

import { describe, expect, test } from "bun:test"
import { createOrGetSession } from "./session-creator"
import { _resetForTesting, subagentSessions } from "../../features/claude-code-session-state"
2026-05-12 15:38:31 +09:00
import { unsafeTestValue } from "../../../test-support/unsafe-test-value"
describe("call-omo-agent createOrGetSession", () => {
test("creates child session without overriding permission and tracks it as subagent session", async () => {
// given
_resetForTesting()
const createCalls: Array<unknown> = []
const ctx = {
directory: "/project",
client: {
session: {
get: async () => ({ data: { directory: "/parent" } }),
create: async (args: unknown) => {
createCalls.push(args)
return { data: { id: "ses_child" } }
},
},
},
}
const toolContext = {
sessionID: "ses_parent",
messageID: "msg_parent",
agent: "sisyphus",
abort: new AbortController().signal,
}
const args = {
description: "test",
prompt: "hello",
subagent_type: "explore",
run_in_background: true,
}
// when
2026-05-12 15:38:31 +09:00
const result = await createOrGetSession(unsafeTestValue(args), unsafeTestValue(toolContext), unsafeTestValue(ctx))
// then
expect(result).toEqual({ sessionID: "ses_child", isNew: true })
expect(createCalls).toHaveLength(1)
2026-05-12 15:38:31 +09:00
const createBody = (unsafeTestValue(createCalls[0]))?.body
expect(createBody?.parentID).toBe("ses_parent")
expect(createBody?.permission).toBeUndefined()
expect(subagentSessions.has("ses_child")).toBe(true)
})
})