41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { describe, it, expect, afterEach } from 'vitest';
|
|
import { listSessions } from './sessions.js';
|
|
import { SessionStore } from '../session/index.js';
|
|
import { join } from 'path';
|
|
import { tmpdir } from 'os';
|
|
import { existsSync, unlinkSync } from 'fs';
|
|
|
|
describe('sessions command', () => {
|
|
const dbPath = join(tmpdir(), 'flynn-test-sessions-cli.db');
|
|
let store: SessionStore;
|
|
|
|
afterEach(() => {
|
|
store?.close();
|
|
if (existsSync(dbPath)) unlinkSync(dbPath);
|
|
});
|
|
|
|
it('returns empty list when no sessions', () => {
|
|
store = new SessionStore(dbPath);
|
|
const sessions = listSessions(store);
|
|
expect(sessions).toEqual([]);
|
|
});
|
|
|
|
it('returns session IDs with message counts', () => {
|
|
store = new SessionStore(dbPath);
|
|
store.addMessage('telegram:123', { role: 'user', content: 'Hello' });
|
|
store.addMessage('telegram:123', { role: 'assistant', content: 'Hi' });
|
|
store.addMessage('tui:local', { role: 'user', content: 'Test' });
|
|
|
|
const sessions = listSessions(store);
|
|
expect(sessions).toHaveLength(2);
|
|
|
|
const telegramSession = sessions.find(s => s.id === 'telegram:123');
|
|
expect(telegramSession).toBeDefined();
|
|
expect(telegramSession!.messageCount).toBe(2);
|
|
|
|
const tuiSession = sessions.find(s => s.id === 'tui:local');
|
|
expect(tuiSession).toBeDefined();
|
|
expect(tuiSession!.messageCount).toBe(1);
|
|
});
|
|
});
|