feat: add isolated memory spaces
This commit is contained in:
@@ -34,6 +34,58 @@ describe('IdentityDB topic and fact writes', () => {
|
||||
expect(topics).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('keeps same normalized topic names isolated across spaces', async () => {
|
||||
const alpha = await db.upsertTopic({
|
||||
name: 'TypeScript',
|
||||
category: 'entity',
|
||||
granularity: 'concrete',
|
||||
spaceName: 'A',
|
||||
});
|
||||
|
||||
const beta = await db.upsertTopic({
|
||||
name: 'TypeScript',
|
||||
category: 'entity',
|
||||
granularity: 'concrete',
|
||||
spaceName: 'B',
|
||||
});
|
||||
|
||||
expect(beta.id).not.toBe(alpha.id);
|
||||
|
||||
const alphaTopics = await db.listTopics({ includeFacts: false, spaceName: 'A' });
|
||||
const betaTopics = await db.listTopics({ includeFacts: false, spaceName: 'B' });
|
||||
const defaultTopics = await db.listTopics({ includeFacts: false });
|
||||
|
||||
expect(alphaTopics.map((topic) => topic.name)).toEqual(['TypeScript']);
|
||||
expect(betaTopics.map((topic) => topic.name)).toEqual(['TypeScript']);
|
||||
expect(defaultTopics).toHaveLength(0);
|
||||
});
|
||||
|
||||
it('keeps alias resolution scoped to the requested space', async () => {
|
||||
await db.upsertTopic({
|
||||
name: 'TypeScript',
|
||||
category: 'entity',
|
||||
granularity: 'concrete',
|
||||
spaceName: 'A',
|
||||
});
|
||||
await db.upsertTopic({
|
||||
name: 'TeamSpeak',
|
||||
category: 'entity',
|
||||
granularity: 'concrete',
|
||||
spaceName: 'B',
|
||||
});
|
||||
|
||||
await db.addTopicAlias('TypeScript', 'TS', { spaceName: 'A' });
|
||||
await db.addTopicAlias('TeamSpeak', 'TS', { spaceName: 'B' });
|
||||
|
||||
const alphaResolved = await db.resolveTopic('ts', { spaceName: 'A' });
|
||||
const betaResolved = await db.resolveTopic('ts', { spaceName: 'B' });
|
||||
const defaultResolved = await db.resolveTopic('ts');
|
||||
|
||||
expect(alphaResolved?.name).toBe('TypeScript');
|
||||
expect(betaResolved?.name).toBe('TeamSpeak');
|
||||
expect(defaultResolved).toBeNull();
|
||||
});
|
||||
|
||||
it('adds one fact that links multiple topics', async () => {
|
||||
const fact = await db.addFact({
|
||||
statement: 'I have worked with TypeScript since 2025.',
|
||||
|
||||
Reference in New Issue
Block a user