oh-my-opencode/src/tools/agent-teams/team-task-store.test.ts
2026-02-14 13:33:29 +09:00

45 lines
1.5 KiB
TypeScript

/// <reference types="bun-types" />
import { afterEach, beforeEach, describe, expect, test } from "bun:test"
import { mkdtempSync, rmSync } from "node:fs"
import { tmpdir } from "node:os"
import { join } from "node:path"
import { createTeamConfig, deleteTeamData } from "./team-config-store"
import { createTeamTask, deleteTeamTaskFile, readTeamTask } from "./team-task-store"
describe("agent-teams task store", () => {
let originalCwd: string
let tempProjectDir: string
beforeEach(() => {
originalCwd = process.cwd()
tempProjectDir = mkdtempSync(join(tmpdir(), "agent-teams-task-store-"))
process.chdir(tempProjectDir)
createTeamConfig("core", "Core team", "ses-main", tempProjectDir, "sisyphus")
})
afterEach(() => {
deleteTeamData("core")
process.chdir(originalCwd)
rmSync(tempProjectDir, { recursive: true, force: true })
})
test("creates and reads a task", () => {
//#given
const created = createTeamTask("core", "Subject", "Description")
//#when
const loaded = readTeamTask("core", created.id)
//#then
expect(loaded?.id).toBe(created.id)
expect(loaded?.subject).toBe("Subject")
})
test("rejects invalid team name and task id", () => {
//#then
expect(() => readTeamTask("../../etc", "T-1")).toThrow("team_name_invalid")
expect(() => readTeamTask("core", "../../passwd")).toThrow("task_id_invalid")
expect(() => deleteTeamTaskFile("core", "../../passwd")).toThrow("task_id_invalid")
})
})