| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /**
- * Keyless real-Loader-path smoke for the SQLite session-search service.
- *
- * @module @deepseek-ai/dsh-session-query-sqlite/tests/load-path
- */
- import { afterEach, describe, expect, it } from 'vitest'
- import { Context } from 'cordis'
- import Loader from '@cordisjs/plugin-loader'
- import { SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session'
- import SessionStore from '@deepseek-ai/dsh-session'
- import SessionPersistenceSqlite from '@deepseek-ai/dsh-session-persistence-sqlite'
- import SessionSearchSqlite, * as searchModule from '@deepseek-ai/dsh-session-query-sqlite'
- import { mkdtemp, rm } from 'node:fs/promises'
- import { tmpdir } from 'node:os'
- import { join } from 'node:path'
- const temporaryDirectories: string[] = []
- afterEach(async () => {
- for (const directory of temporaryDirectories.splice(0)) {
- await rm(directory, { recursive: true, force: true })
- }
- })
- async function temporaryPath(name: string): Promise<string> {
- const directory = await mkdtemp(join(tmpdir(), 'dsh-session-search-loader-'))
- temporaryDirectories.push(directory)
- return join(directory, name)
- }
- describe('dsh-session-query-sqlite real Loader path', () => {
- it('unwraps, mounts, and searches the real persistence backend', async () => {
- const persistencePath = await temporaryPath('canonical.db')
- const searchPath = await temporaryPath('derived.db')
- const ctx = new Context()
- await ctx.plugin(SessionStore)
- const persistence = await ctx.plugin(SessionPersistenceSqlite, { path: persistencePath })
- const loader = Object.create(Loader.prototype) as Loader
- const unwrapped = loader.unwrapExports(searchModule) as Parameters<Context['plugin']>[0]
- expect(unwrapped).toBe(SessionSearchSqlite)
- const search = await ctx.plugin(unwrapped, { path: searchPath })
- const id = SessionId('loader-path')
- await ctx.sessionPersistence.create({ version: SESSION_FORMAT_VERSION, id, createdAt: 10 })
- await ctx.sessionPersistence.append(id, [{
- type: 'user/message',
- seq: 0,
- time: 10,
- data: { content: [{ type: 'text', text: 'real Loader needle' }], source: { kind: 'user' } },
- surfaceOp: 'append',
- }])
- await expect(ctx.sessionSearch.searchSessions({ query: 'Loader needle' }))
- .resolves.toMatchObject({ items: [{ header: { id }, persisted: true, live: false }] })
- await search.dispose()
- await persistence.dispose()
- })
- })
|