feat: finalize mindspace service extraction phase a
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import {
|
||||
assertMindSpaceServerAdapterContract,
|
||||
createMindSpaceServerAdapter,
|
||||
resolveMindSpaceServerAdapterKind,
|
||||
} from './mindspace-server-adapter.mjs';
|
||||
|
||||
test('resolveMindSpaceServerAdapterKind defaults to local and rejects unknown kinds', () => {
|
||||
assert.equal(resolveMindSpaceServerAdapterKind({}), 'local');
|
||||
assert.equal(resolveMindSpaceServerAdapterKind({ MINDSPACE_SERVER_ADAPTER: 'REMOTE' }), 'remote');
|
||||
assert.throws(
|
||||
() => resolveMindSpaceServerAdapterKind({ MINDSPACE_SERVER_ADAPTER: 'legacy' }),
|
||||
/Unsupported MINDSPACE_SERVER_ADAPTER/,
|
||||
);
|
||||
});
|
||||
|
||||
test('createMindSpaceServerAdapter returns a contract-complete local adapter by default', () => {
|
||||
const adapter = createMindSpaceServerAdapter({
|
||||
pool: {
|
||||
query: async () => {
|
||||
throw new Error('not implemented in unit test');
|
||||
},
|
||||
},
|
||||
h5Root: '/tmp/h5',
|
||||
env: {
|
||||
MINDSPACE_STORAGE_ROOT: '/srv/mindspace-data',
|
||||
H5_PUBLIC_BASE_URL: 'https://example.com',
|
||||
},
|
||||
maxFileBytes: 4096,
|
||||
publicPageLimit: 3,
|
||||
resolveUserIdForAgentSession: async () => 'user-1',
|
||||
logger: { log() {}, warn() {}, error() {} },
|
||||
});
|
||||
|
||||
assert.equal(adapter.kind, 'local');
|
||||
assert.equal(adapter.implementationStatus, 'ready');
|
||||
assert.equal(assertMindSpaceServerAdapterContract(adapter), adapter);
|
||||
});
|
||||
|
||||
test('createMindSpaceServerAdapter exposes a remote stub that fails fast when selected', () => {
|
||||
const adapter = createMindSpaceServerAdapter({
|
||||
env: {
|
||||
MINDSPACE_SERVER_ADAPTER: 'remote',
|
||||
MINDSPACE_REMOTE_BASE_URL: 'https://mindspace.example.com',
|
||||
},
|
||||
logger: { log() {}, warn() {}, error() {} },
|
||||
});
|
||||
|
||||
assert.equal(adapter.kind, 'remote');
|
||||
assert.equal(adapter.implementationStatus, 'scaffold');
|
||||
assert.equal(assertMindSpaceServerAdapterContract(adapter), adapter);
|
||||
assert.equal(adapter.assertReady(), true);
|
||||
assert.deepEqual(adapter.startBackgroundJobs(), {
|
||||
publicationCleanup: null,
|
||||
agentWorker: null,
|
||||
workspaceMaintenance: null,
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user