Skip to content

Commit d327723

Browse files
test: add settings db tests (#44)
1 parent 990d2ae commit d327723

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

tests/lib/config.test.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import fs from 'node:fs'
2+
import os from 'node:os'
3+
import path from 'node:path'
4+
import { beforeEach, afterEach, describe, expect, it, vi } from 'vitest'
5+
6+
let originalCwd: string
7+
let tempDir: string
8+
let config: typeof import('../../src/lib/config')
9+
10+
// Utility to clear the env mock object
11+
async function resetEnv() {
12+
const { env } = await import('$env/dynamic/private')
13+
for (const key of Object.keys(env)) {
14+
delete env[key]
15+
}
16+
}
17+
18+
describe('settings db', () => {
19+
beforeEach(async () => {
20+
vi.resetModules()
21+
await resetEnv()
22+
originalCwd = process.cwd()
23+
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'settings-test-'))
24+
process.chdir(tempDir)
25+
const { env } = await import('$env/dynamic/private')
26+
env.OPENAI_API_KEY = 'default-key'
27+
config = await import('$lib/config')
28+
})
29+
30+
afterEach(() => {
31+
process.chdir(originalCwd)
32+
fs.rmSync(tempDir, { recursive: true, force: true })
33+
})
34+
35+
it('loads default settings from env', async () => {
36+
const settings = await config.getAllSettings()
37+
const record = settings.find((s) => s.key === 'OPENAI_API_KEY')
38+
expect(record?.value).toBe('default-key')
39+
expect(config.settings.OPENAI_API_KEY).toBe('default-key')
40+
})
41+
42+
it('updates and reads settings', async () => {
43+
await config.updateSetting('TEST_KEY', 'foo')
44+
let rows = await config.getAllSettings()
45+
let row = rows.find((s) => s.key === 'TEST_KEY')
46+
expect(row?.value).toBe('foo')
47+
expect(config.settings.TEST_KEY).toBe('foo')
48+
49+
await config.updateSetting('TEST_KEY', 'bar')
50+
rows = await config.getAllSettings()
51+
row = rows.find((s) => s.key === 'TEST_KEY')
52+
expect(row?.value).toBe('bar')
53+
expect(config.settings.TEST_KEY).toBe('bar')
54+
})
55+
})

0 commit comments

Comments
 (0)