Merge Memory V2 runtime facade
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import {
|
||||
parseMemoryPgvectorSmokeArgs,
|
||||
runMemoryPgvectorSmokeCli,
|
||||
} from './smoke-memory-v2-pgvector.mjs';
|
||||
|
||||
function writableBuffer() {
|
||||
let value = '';
|
||||
return {
|
||||
write(chunk) {
|
||||
value += String(chunk);
|
||||
},
|
||||
value() {
|
||||
return value;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
test('parseMemoryPgvectorSmokeArgs defaults to safe existing-schema smoke', () => {
|
||||
assert.deepEqual(parseMemoryPgvectorSmokeArgs([]), {
|
||||
tableName: 'memory_embeddings',
|
||||
dimensions: 3,
|
||||
createSchema: false,
|
||||
createExtension: false,
|
||||
cleanup: true,
|
||||
urlEnv: 'MEMORY_PGVECTOR_DATABASE_URL',
|
||||
help: false,
|
||||
});
|
||||
});
|
||||
|
||||
test('parseMemoryPgvectorSmokeArgs maps local setup options', () => {
|
||||
assert.deepEqual(
|
||||
parseMemoryPgvectorSmokeArgs([
|
||||
'--table',
|
||||
'memory_smoke',
|
||||
'--dimensions',
|
||||
'4',
|
||||
'--create-schema',
|
||||
'--create-extension',
|
||||
'--keep-rows',
|
||||
'--url-env',
|
||||
'TEST_PG_URL',
|
||||
]),
|
||||
{
|
||||
tableName: 'memory_smoke',
|
||||
dimensions: 4,
|
||||
createSchema: true,
|
||||
createExtension: true,
|
||||
cleanup: false,
|
||||
urlEnv: 'TEST_PG_URL',
|
||||
help: false,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('runMemoryPgvectorSmokeCli requires explicit pgvector URL', async () => {
|
||||
await assert.rejects(
|
||||
() => runMemoryPgvectorSmokeCli([], {}, { stdout: writableBuffer() }),
|
||||
/MEMORY_PGVECTOR_DATABASE_URL/,
|
||||
);
|
||||
});
|
||||
|
||||
test('runMemoryPgvectorSmokeCli opens pool, runs smoke, and closes pool', async () => {
|
||||
const stdout = writableBuffer();
|
||||
let poolEnded = false;
|
||||
class FakePool {
|
||||
constructor(options) {
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
async query(sql) {
|
||||
if (/SELECT id, content, type, created_at/.test(sql)) {
|
||||
return {
|
||||
rows: [{
|
||||
id: 1,
|
||||
content: 'memory-v2 smoke near vector',
|
||||
type: 'smoke',
|
||||
score: 1,
|
||||
}],
|
||||
};
|
||||
}
|
||||
return { rows: [] };
|
||||
}
|
||||
|
||||
async end() {
|
||||
poolEnded = true;
|
||||
}
|
||||
}
|
||||
|
||||
const result = await runMemoryPgvectorSmokeCli(
|
||||
['--create-schema', '--create-extension'],
|
||||
{ MEMORY_PGVECTOR_DATABASE_URL: 'postgresql://local/memory' },
|
||||
{
|
||||
stdout,
|
||||
async importPg(specifier) {
|
||||
assert.equal(specifier, 'pg');
|
||||
return { Pool: FakePool };
|
||||
},
|
||||
},
|
||||
);
|
||||
const output = JSON.parse(stdout.value());
|
||||
|
||||
assert.equal(result.ok, true);
|
||||
assert.equal(output.ok, true);
|
||||
assert.equal(output.expectedTopText, 'memory-v2 smoke near vector');
|
||||
assert.equal(poolEnded, true);
|
||||
});
|
||||
Reference in New Issue
Block a user