Files
orca/src/main/ai-vault/session-scanner-opencode-sqlite-paths.test.ts
T
03fd869b92 feat(ai-vault): support OpenCode SQLite session storage (#5925)
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-23 11:18:17 -07:00

48 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
buildOpenCodeSqliteCandidatePath,
looksLikeOpenCodeSqliteCandidate,
splitOpenCodeSqliteCandidate
} from './session-scanner-opencode-sqlite-paths'
describe('splitOpenCodeSqliteCandidate', () => {
it('splits a synthetic db#sessionId path', () => {
const result = splitOpenCodeSqliteCandidate('/data/opencode.db#ses_abc')
expect(result).toEqual({ dbPath: '/data/opencode.db', sessionId: 'ses_abc' })
})
it('splits a stable-db path', () => {
const result = splitOpenCodeSqliteCandidate('/data/opencode-stable.db#ses_xyz')
expect(result).toEqual({ dbPath: '/data/opencode-stable.db', sessionId: 'ses_xyz' })
})
it('rejects a path whose db basename is not opencode*.db', () => {
expect(splitOpenCodeSqliteCandidate('/data/random.db#ses_abc')).toBeNull()
expect(splitOpenCodeSqliteCandidate('/data/notes.txt#ses_abc')).toBeNull()
})
it('rejects a path without a separator', () => {
expect(splitOpenCodeSqliteCandidate('/data/opencode.db')).toBeNull()
})
it('rejects an empty sessionId', () => {
expect(splitOpenCodeSqliteCandidate('/data/opencode.db#')).toBeNull()
})
})
describe('looksLikeOpenCodeSqliteCandidate', () => {
it('returns true for a synthetic path', () => {
expect(looksLikeOpenCodeSqliteCandidate('/x/opencode.db#ses_1')).toBe(true)
})
it('returns false for a real filesystem path', () => {
expect(looksLikeOpenCodeSqliteCandidate('/x/storage/session/proj/ses_1.json')).toBe(false)
})
})
describe('buildOpenCodeSqliteCandidatePath', () => {
it('joins dbPath and sessionId with #', () => {
expect(buildOpenCodeSqliteCandidatePath('/d/opencode.db', 'ses_1')).toBe('/d/opencode.db#ses_1')
})
})