Files
RedditBot/tests/agent-job-manager.test.ts
T

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');
});
});