Files
metapi/src/server/db/index.default-path.test.ts
T

45 lines
1.3 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest';
import { tmpdir } from 'node:os';
import { resolve } from 'node:path';
type DbModule = typeof import('./index.js');
describe('sqlite default path resolution', () => {
let dbModule: DbModule | null = null;
afterEach(async () => {
if (dbModule) {
await dbModule.closeDbConnections();
dbModule = null;
}
delete process.env.DATA_DIR;
delete process.env.DB_URL;
vi.resetModules();
});
it('uses an isolated temp sqlite path under vitest when no db env is configured', async () => {
delete process.env.DATA_DIR;
delete process.env.DB_URL;
vi.resetModules();
dbModule = await import('./index.js');
const sqlitePath = dbModule.__dbProxyTestUtils.resolveSqlitePath();
const sharedRepoPath = resolve('./data/hub.db');
expect(sqlitePath).not.toBe(sharedRepoPath);
expect(sqlitePath).toContain(tmpdir());
expect(sqlitePath).toContain('metapi-vitest');
});
it('still honors explicit DATA_DIR when provided', async () => {
process.env.DATA_DIR = resolve(tmpdir(), 'metapi-explicit-data-dir');
delete process.env.DB_URL;
vi.resetModules();
dbModule = await import('./index.js');
const sqlitePath = dbModule.__dbProxyTestUtils.resolveSqlitePath();
expect(sqlitePath).toBe(resolve(process.env.DATA_DIR, 'hub.db'));
});
});