agenthub/tests/taskService.test.ts
2026-06-25 12:18:49 +02:00

39 lines
1.2 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import { mkdtempSync, rmSync } from 'fs';
import { tmpdir } from 'os';
import { join } from 'path';
import { createTask, listTasks, getTask, claimTask, doneTask } from '../src/core/services/taskService.js';
describe('taskService', () => {
let cwd: string;
beforeEach(() => {
cwd = mkdtempSync(join(tmpdir(), 'ah-task-'));
});
afterEach(() => {
rmSync(cwd, { recursive: true, force: true });
});
it('creates a task', () => {
const task = createTask(cwd, { title: 'Test', role: 'implementer' });
expect(task.id).toBe('TSK-0001');
expect(task.title).toBe('Test');
expect(task.status).toBe('open');
});
it('lists tasks', () => {
createTask(cwd, { title: 'A', role: 'implementer' });
expect(listTasks(cwd)).toHaveLength(1);
});
it('claims and completes a task', () => {
const task = createTask(cwd, { title: 'B', role: 'implementer' });
const claimed = claimTask(cwd, task.id, 'codex');
expect(claimed.status).toBe('in_progress');
expect(claimed.assignedTo).toBe('codex');
const done = doneTask(cwd, task.id);
expect(done.status).toBe('done');
});
});