UNPKG

@codervisor/devlog-ai

Version:

AI Chat History Extractor & Docker-based Automation - TypeScript implementation for GitHub Copilot and other AI coding assistants with automated testing capabilities

116 lines (96 loc) 3.34 kB
/** * Tests for AI Models */ import { describe, it, expect } from 'vitest'; import { MessageData, ChatSessionData, WorkspaceDataContainer } from '../models/index.js'; describe('MessageData', () => { it('should create a message with required fields', () => { const message = new MessageData({ role: 'user', content: 'Hello, world!', }); expect(message.role).toBe('user'); expect(message.content).toBe('Hello, world!'); expect(message.timestamp).toBeInstanceOf(Date); expect(message.metadata).toEqual({}); }); it('should serialize to dict correctly', () => { const message = new MessageData({ id: 'msg-1', role: 'assistant', content: 'Hello back!', timestamp: new Date('2023-01-01T00:00:00.000Z'), metadata: { type: 'assistant_response' }, }); const dict = message.toDict(); expect(dict).toEqual({ id: 'msg-1', role: 'assistant', content: 'Hello back!', timestamp: '2023-01-01T00:00:00.000Z', metadata: { type: 'assistant_response' }, }); }); it('should deserialize from dict correctly', () => { const dict = { id: 'msg-1', role: 'user', content: 'Test message', timestamp: '2023-01-01T00:00:00.000Z', metadata: { type: 'user_request' }, }; const message = MessageData.fromDict(dict); expect(message.id).toBe('msg-1'); expect(message.role).toBe('user'); expect(message.content).toBe('Test message'); expect(message.timestamp).toEqual(new Date('2023-01-01T00:00:00.000Z')); expect(message.metadata).toEqual({ type: 'user_request' }); }); }); describe('ChatSessionData', () => { it('should create a session with required fields', () => { const session = new ChatSessionData({ agent: 'GitHub Copilot', }); expect(session.agent).toBe('GitHub Copilot'); expect(session.timestamp).toBeInstanceOf(Date); expect(session.messages).toEqual([]); expect(session.metadata).toEqual({}); }); it('should handle messages correctly', () => { const messages = [ new MessageData({ role: 'user', content: 'Hello' }), new MessageData({ role: 'assistant', content: 'Hi there!' }), ]; const session = new ChatSessionData({ agent: 'GitHub Copilot', messages, session_id: 'session-1', }); expect(session.messages).toHaveLength(2); expect(session.session_id).toBe('session-1'); }); }); describe('WorkspaceDataContainer', () => { it('should create workspace data with required fields', () => { const workspace = new WorkspaceDataContainer({ agent: 'GitHub Copilot', }); expect(workspace.agent).toBe('GitHub Copilot'); expect(workspace.chat_sessions).toEqual([]); expect(workspace.metadata).toEqual({}); }); it('should handle chat sessions correctly', () => { const sessions = [ new ChatSessionData({ agent: 'GitHub Copilot', session_id: 'session-1' }), new ChatSessionData({ agent: 'GitHub Copilot', session_id: 'session-2' }), ]; const workspace = new WorkspaceDataContainer({ agent: 'GitHub Copilot', chat_sessions: sessions, workspace_path: '/test/workspace', }); expect(workspace.chat_sessions).toHaveLength(2); expect(workspace.workspace_path).toBe('/test/workspace'); }); });