UNPKG

lorehub

Version:

Capture and surface the collective wisdom of your codebase

71 lines 2.52 kB
import { describe, it, expect, beforeEach, afterEach } from 'vitest'; import { Database } from './database.js'; describe('Database', () => { let db; beforeEach(() => { // Use in-memory database for tests db = new Database(':memory:'); }); afterEach(() => { db.close(); }); it('should initialize with drizzle migrations', () => { // Check that tables were created const tables = db.listTables(); console.log('Tables created:', tables); // Check for the new table names expect(tables).toContain('realms'); expect(tables).toContain('lores'); expect(tables).toContain('lore_relations'); expect(tables).toContain('__drizzle_migrations'); }); it('should create and retrieve a realm', () => { const realm = db.createRealm({ name: 'test-realm', path: '/test/path', gitRemote: 'https://github.com/test/repo.git', }); expect(realm.name).toBe('test-realm'); expect(realm.gitRemote).toBe('https://github.com/test/repo.git'); const found = db.findRealmByPath('/test/path'); expect(found).toBeDefined(); expect(found?.id).toBe(realm.id); }); it('should create and retrieve lores', async () => { const realm = db.createRealm({ name: 'test-realm', path: '/test/path', }); const loreInput = { realmId: realm.id, content: 'Test lore content', type: 'decree', origin: { type: 'manual', reference: 'test', }, }; const lore = await db.createLore(loreInput); expect(lore.content).toBe('Test lore content'); expect(lore.status).toBe('living'); const lores = db.listLoresByRealm(realm.id); expect(lores).toHaveLength(1); expect(lores[0]?.id).toBe(lore.id); }); it('should soft delete lores', async () => { const realm = db.createRealm({ name: 'test-realm', path: '/test/path', }); const lore = await db.createLore({ realmId: realm.id, content: 'To be deleted', type: 'decree', origin: { type: 'manual', reference: 'test' }, }); db.softDeleteLore(lore.id); const updatedLore = db.findLore(lore.id); expect(updatedLore?.status).toBe('archived'); }); }); //# sourceMappingURL=database.test.js.map