44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
import { execFile } from 'node:child_process';
|
|
import { promisify } from 'node:util';
|
|
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
const execFileAsync = promisify(execFile);
|
|
|
|
describe('Bun runtime compatibility', () => {
|
|
it('connects to sqlite from the package in Bun', async () => {
|
|
const script = [
|
|
"import { IdentityDB } from './src/index.ts';",
|
|
"const db = await IdentityDB.connect({ client: 'sqlite', filename: ':memory:' });",
|
|
'await db.initialize();',
|
|
"console.log('bun-sqlite-ok');",
|
|
'await db.close();',
|
|
].join('\n');
|
|
|
|
const result = await execFileAsync('bun', ['--eval', script], {
|
|
cwd: process.cwd(),
|
|
});
|
|
|
|
expect(result.stdout).toContain('bun-sqlite-ok');
|
|
});
|
|
|
|
it('supports writes and reads through the Bun sqlite adapter path', async () => {
|
|
const script = [
|
|
"import { IdentityDB } from './src/index.ts';",
|
|
"const db = await IdentityDB.connect({ client: 'sqlite', filename: ':memory:' });",
|
|
'await db.initialize();',
|
|
"await db.addFact({ statement: 'Bun supports sqlite.', topics: [{ name: 'Bun', category: 'entity', granularity: 'concrete' }, { name: 'sqlite', category: 'concept', granularity: 'concrete' }] });",
|
|
"const facts = await db.getTopicFacts('Bun');",
|
|
"if (facts.length !== 1 || facts[0]?.statement !== 'Bun supports sqlite.') throw new Error('bun sqlite CRUD failed');",
|
|
"console.log('bun-sqlite-crud-ok');",
|
|
'await db.close();',
|
|
].join('\n');
|
|
|
|
const result = await execFileAsync('bun', ['--eval', script], {
|
|
cwd: process.cwd(),
|
|
});
|
|
|
|
expect(result.stdout).toContain('bun-sqlite-crud-ok');
|
|
});
|
|
});
|