Files
memind/scripts/scaffold-memory-v2-backend.test.mjs
2026-07-03 09:46:03 +08:00

98 lines
2.3 KiB
JavaScript

import assert from 'node:assert/strict';
import fs from 'node:fs/promises';
import os from 'node:os';
import path from 'node:path';
import test from 'node:test';
import {
parseMemoryV2ScaffoldArgs,
runMemoryV2ScaffoldCli,
} from './scaffold-memory-v2-backend.mjs';
function writableBuffer() {
let value = '';
return {
write(chunk) {
value += String(chunk);
},
value() {
return value;
},
};
}
test('parseMemoryV2ScaffoldArgs parses scaffold options', () => {
assert.deepEqual(
parseMemoryV2ScaffoldArgs([
'--name',
'qdrant',
'--category',
'semantic',
'--role',
'scale-out',
'--capability',
'resolve',
'--flag',
'MEMORY_QDRANT_ENABLED',
'--out',
'memory-v2-qdrant.mjs',
'--write',
]),
{
name: 'qdrant',
category: 'semantic',
role: 'scale-out',
capabilities: ['resolve'],
flag: 'MEMORY_QDRANT_ENABLED',
out: 'memory-v2-qdrant.mjs',
write: true,
help: false,
},
);
});
test('runMemoryV2ScaffoldCli dry-run prints adapter source', async () => {
const stdout = writableBuffer();
const result = await runMemoryV2ScaffoldCli({
argv: [
'--name',
'qdrant',
'--category',
'semantic',
'--capability',
'resolve',
],
stdout,
});
assert.equal(result.mode, 'dry-run');
assert.match(stdout.value(), /export function createQdrantMemoryBackend/);
assert.match(stdout.value(), /name: 'qdrant'/);
});
test('runMemoryV2ScaffoldCli writes new adapter and refuses overwrite', async () => {
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'memory-v2-scaffold-'));
const stdout = writableBuffer();
const argv = [
'--name',
'mem0',
'--category',
'extraction',
'--capability',
'write',
'--capability',
'compact',
'--write',
];
const result = await runMemoryV2ScaffoldCli({ argv, stdout, cwd: tmpDir });
const written = await fs.readFile(path.join(tmpDir, 'memory-v2-mem0.mjs'), 'utf8');
assert.equal(result.mode, 'write');
assert.match(stdout.value(), /Memory V2 backend scaffold created/);
assert.match(written, /export function createMem0MemoryBackend/);
await assert.rejects(
() => runMemoryV2ScaffoldCli({ argv, stdout: writableBuffer(), cwd: tmpDir }),
/Refusing to overwrite/,
);
});