Files
EJClaw/src/db-paired-turn-outputs.test.ts
2026-05-31 16:20:09 +09:00

77 lines
1.9 KiB
TypeScript

import { Database } from 'bun:sqlite';
import { describe, expect, it } from 'vitest';
import { applyBaseSchema } from './db/base-schema.js';
import {
getPairedTurnOutputsFromDatabase,
insertPairedTurnOutputInDatabase,
} from './db/paired-turn-outputs.js';
describe('paired turn output attachments', () => {
it('marks truncated output text so reviewers know evidence was clipped', () => {
const database = new Database(':memory:');
try {
applyBaseSchema(database);
insertPairedTurnOutputInDatabase(
database,
'paired-task-turn-output-truncated',
1,
'owner',
'x'.repeat(60_000),
);
const [output] = getPairedTurnOutputsFromDatabase(
database,
'paired-task-turn-output-truncated',
);
expect(output.output_text).toHaveLength(50_000);
expect(output.output_text).toMatch(
/\[Output truncated: 60000 > 50000 chars\]/,
);
} finally {
database.close();
}
});
it('preserves attachments for reviewer evidence prompts', () => {
const database = new Database(':memory:');
try {
applyBaseSchema(database);
insertPairedTurnOutputInDatabase(
database,
'paired-task-turn-output-attachments',
1,
'owner',
'TASK_DONE\n새 스크린샷 첨부',
{
attachments: [
{
path: '/tmp/settings-v0.1.92-deployed-390.png',
name: 'settings-v0.1.92-deployed-390.png',
mime: 'image/png',
},
],
},
);
const outputs = getPairedTurnOutputsFromDatabase(
database,
'paired-task-turn-output-attachments',
);
expect(outputs[0].attachments).toEqual([
{
path: '/tmp/settings-v0.1.92-deployed-390.png',
name: 'settings-v0.1.92-deployed-390.png',
mime: 'image/png',
},
]);
} finally {
database.close();
}
});
});