Files
Hermes-ui/tests/server/session-sync.test.ts
T

61 lines
2.0 KiB
TypeScript
Raw Normal View History

/**
* Tests for the disabled Hermes session import path.
*/
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
describe('session-sync', () => {
let db: any = null
beforeEach(async () => {
vi.resetModules()
const { DatabaseSync } = await import('node:sqlite')
db = new DatabaseSync(':memory:')
vi.doMock('../../packages/server/src/db/index', () => ({
getDb: () => db,
getStoragePath: () => ':memory:',
}))
vi.doMock('../../packages/server/src/db/hermes/sessions-db', () => ({
listSessionSummaries: vi.fn().mockResolvedValue([]),
getSessionDetailFromDbWithProfile: vi.fn(),
}))
})
afterEach(() => {
db?.close()
db = null
vi.doUnmock('../../packages/server/src/db/index')
vi.doUnmock('../../packages/server/src/db/hermes/sessions-db')
vi.resetModules()
})
async function initTestDb() {
const { initAllStores } = await import('../../packages/server/src/db/hermes/init')
initAllStores()
}
it('does not import Hermes sessions when local DB is not empty', async () => {
await initTestDb()
const { syncAllHermesSessionsOnStartup } = await import('../../packages/server/src/services/hermes/session-sync')
db.prepare(`
INSERT INTO sessions (id, profile, source, model, title, started_at, last_active)
VALUES ('test-session-1', 'default', 'api_server', 'gpt-4', 'Test Session', ?, ?)
`).run(Date.now(), Date.now())
await syncAllHermesSessionsOnStartup()
const countAfter = db.prepare('SELECT COUNT(*) as count FROM sessions').get() as { count: number }
expect(countAfter.count).toBe(1)
})
it('does not import Hermes sessions when local DB is empty', async () => {
await initTestDb()
const { syncAllHermesSessionsOnStartup } = await import('../../packages/server/src/services/hermes/session-sync')
await expect(syncAllHermesSessionsOnStartup()).resolves.toBeUndefined()
const countAfter = db.prepare('SELECT COUNT(*) as count FROM sessions').get() as { count: number }
expect(countAfter.count).toBe(0)
})
})