Files
EJClaw/src/db-work-items.test.ts

52 lines
1.4 KiB
TypeScript

import { beforeEach, describe, expect, it } from 'vitest';
import {
_initTestDatabase,
createProducedWorkItem,
getOpenWorkItem,
getRecentDeliveredWorkItemsForChat,
markWorkItemDelivered,
} from './db.js';
beforeEach(() => {
_initTestDatabase();
});
describe('work item canonical output queue', () => {
it('supersedes stale open work items before creating a newer canonical output', () => {
const stale = createProducedWorkItem({
group_folder: 'discord_test',
chat_jid: 'dc:supersede',
agent_type: 'codex',
service_id: 'codex-main',
delivery_role: 'owner',
start_seq: 1,
end_seq: 2,
result_payload: 'stale owner output',
});
const fresh = createProducedWorkItem({
group_folder: 'discord_test',
chat_jid: 'dc:supersede',
agent_type: 'codex',
service_id: 'codex-main',
delivery_role: 'owner',
start_seq: 3,
end_seq: 4,
result_payload: 'fresh owner output',
});
expect(fresh.id).not.toBe(stale.id);
expect(getOpenWorkItem('dc:supersede', 'codex', 'codex-main')?.id).toBe(
fresh.id,
);
markWorkItemDelivered(fresh.id, 'discord-message-id');
expect(getRecentDeliveredWorkItemsForChat('dc:supersede', 10)).toEqual([
expect.objectContaining({
id: fresh.id,
result_payload: 'fresh owner output',
}),
]);
});
});