23 lines
1.0 KiB
TypeScript
23 lines
1.0 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
import { AgentJobManager } from '../src/web/agent-job-manager.js';
|
|
|
|
describe('AgentJobManager', () => {
|
|
it('tracks an asynchronous job through completion', async () => {
|
|
const execute = vi.fn(async () => ({ processed: 4 }));
|
|
const manager = new AgentJobManager(execute);
|
|
const created = manager.create({ type: 'chat-sync', kind: 'delta' });
|
|
|
|
expect(created.status).toBe('queued');
|
|
await vi.waitFor(() => expect(manager.get(created.id)?.status).toBe('succeeded'));
|
|
expect(manager.get(created.id)).toMatchObject({ result: { processed: 4 }, error: null });
|
|
});
|
|
|
|
it('records executor failures without losing the job', async () => {
|
|
const manager = new AgentJobManager(async () => { throw new Error('sync unavailable'); });
|
|
const created = manager.create({ type: 'media-sync', kind: 'full' });
|
|
|
|
await vi.waitFor(() => expect(manager.get(created.id)?.status).toBe('failed'));
|
|
expect(manager.get(created.id)?.error).toBe('sync unavailable');
|
|
});
|
|
});
|