feat(team-mode): add team tasklist get with tests
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
/// <reference types="bun-types" />
|
||||||
|
|
||||||
|
import { expect, test } from "bun:test"
|
||||||
|
|
||||||
|
import { createTask } from "./store"
|
||||||
|
import { createTaskInput, createTasklistFixture } from "./test-support"
|
||||||
|
import { getTask } from "./get"
|
||||||
|
|
||||||
|
test("getTask returns a persisted task", async () => {
|
||||||
|
// given
|
||||||
|
const fixture = await createTasklistFixture()
|
||||||
|
|
||||||
|
try {
|
||||||
|
const createdTask = await createTask(fixture.teamRunId, createTaskInput({ subject: "persisted task" }), fixture.config)
|
||||||
|
|
||||||
|
// when
|
||||||
|
const loadedTask = await getTask(fixture.teamRunId, createdTask.id, fixture.config)
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(loadedTask).toEqual(createdTask)
|
||||||
|
} finally {
|
||||||
|
await fixture.cleanup()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
test("getTask throws when the task file is missing", async () => {
|
||||||
|
// given
|
||||||
|
const fixture = await createTasklistFixture()
|
||||||
|
|
||||||
|
try {
|
||||||
|
// when
|
||||||
|
let thrownError: unknown = null
|
||||||
|
|
||||||
|
try {
|
||||||
|
await getTask(fixture.teamRunId, "999", fixture.config)
|
||||||
|
} catch (error) {
|
||||||
|
thrownError = error
|
||||||
|
}
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(thrownError).toBeInstanceOf(Error)
|
||||||
|
} finally {
|
||||||
|
await fixture.cleanup()
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { readFile } from "node:fs/promises"
|
||||||
|
import path from "node:path"
|
||||||
|
|
||||||
|
import type { TeamModeConfig } from "../../../config/schema/team-mode"
|
||||||
|
import { getTasksDir, resolveBaseDir } from "../team-registry"
|
||||||
|
import { TaskSchema } from "../types"
|
||||||
|
import type { Task } from "../types"
|
||||||
|
|
||||||
|
export async function getTask(teamRunId: string, taskId: string, config: TeamModeConfig): Promise<Task> {
|
||||||
|
const tasksDirectory = getTasksDir(resolveBaseDir(config), teamRunId)
|
||||||
|
const taskContent = await readFile(path.join(tasksDirectory, `${taskId}.json`), "utf8")
|
||||||
|
return TaskSchema.parse(JSON.parse(taskContent))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user