Merge pull request #253 from PR0M3TH3AN/test-triggerPruneDryRun-12931935296810438248

test: Add tests for triggerPruneDryRun
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2026-02-17 14:26:29 -05:00
commit e355330e5b
1 file changed
+80
+80
View File
@@ -0,0 +1,80 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import crypto from 'node:crypto';
import { triggerPruneDryRun } from '../src/services/memory/index.js';
function createMemory(overrides = {}) {
return {
id: overrides.id ?? crypto.randomUUID(),
agent_id: overrides.agent_id ?? 'agent-1',
type: overrides.type ?? 'event',
pinned: overrides.pinned ?? false,
last_seen: overrides.last_seen ?? Date.now(),
merged_into: overrides.merged_into ?? null,
// Add other fields to match schema if necessary, though selectPrunableMemories mainly checks last_seen and pinned
};
}
test('triggerPruneDryRun uses repository listPruneCandidates if available', async () => {
const candidates = [createMemory({ id: 'c1' }), createMemory({ id: 'c2' })];
const repository = {
listPruneCandidates: async () => candidates,
listMemories: async () => [],
};
const result = await triggerPruneDryRun({ repository });
assert.equal(result.dryRun, true);
assert.equal(result.candidateCount, 2);
assert.deepEqual(result.candidates.map(c => c.id), ['c1', 'c2']);
});
test('triggerPruneDryRun falls back to in-memory filtering if listPruneCandidates returns empty', async () => {
const now = Date.now();
const retentionMs = 1000;
const oldMemory = createMemory({ id: 'old', last_seen: now - 2000 });
const newMemory = createMemory({ id: 'new', last_seen: now - 500 });
const repository = {
listPruneCandidates: async () => [],
listMemories: async () => [oldMemory, newMemory],
};
const result = await triggerPruneDryRun({ repository, retentionMs, now });
assert.equal(result.candidateCount, 1);
assert.equal(result.candidates[0].id, 'old');
});
test('triggerPruneDryRun handles empty candidates correctly', async () => {
const repository = {
listPruneCandidates: async () => [],
listMemories: async () => [],
};
const result = await triggerPruneDryRun({ repository });
assert.equal(result.candidateCount, 0);
assert.deepEqual(result.candidates, []);
});
test('triggerPruneDryRun output structure validation', async () => {
const memory = createMemory({ id: 'test-mem', agent_id: 'agent-x', type: 'thought', pinned: false, last_seen: 100, merged_into: 'parent-mem' });
const repository = {
listPruneCandidates: async () => [memory],
};
const result = await triggerPruneDryRun({ repository });
assert.equal(result.dryRun, true);
assert.ok(result.retentionMs > 0);
assert.equal(result.candidateCount, 1);
const candidate = result.candidates[0];
assert.equal(candidate.id, 'test-mem');
assert.equal(candidate.agent_id, 'agent-x');
assert.equal(candidate.type, 'thought');
assert.equal(candidate.pinned, false);
assert.equal(candidate.last_seen, 100);
assert.equal(candidate.merged_into, 'parent-mem');
});