detail.test.js
1 import { beforeEach, describe, expect, it, vi } from 'vitest'; 2 const { mockGetConversationDetail } = vi.hoisted(() => ({ 3 mockGetConversationDetail: vi.fn(), 4 })); 5 vi.mock('./utils.js', async () => { 6 const actual = await vi.importActual('./utils.js'); 7 return { 8 ...actual, 9 getConversationDetail: mockGetConversationDetail, 10 }; 11 }); 12 import { getRegistry } from '@jackwener/opencli/registry'; 13 import './detail.js'; 14 describe('doubao detail', () => { 15 const detail = getRegistry().get('doubao/detail'); 16 beforeEach(() => { 17 mockGetConversationDetail.mockReset(); 18 }); 19 it('returns meeting metadata even when the conversation has no chat messages', async () => { 20 mockGetConversationDetail.mockResolvedValue({ 21 messages: [], 22 meeting: { 23 title: 'Weekly Sync', 24 time: '2026-03-28 10:00', 25 }, 26 }); 27 const result = await detail.func({}, { id: '1234567890' }); 28 expect(result).toEqual([ 29 { Role: 'Meeting', Text: 'Weekly Sync (2026-03-28 10:00)' }, 30 ]); 31 }); 32 it('still returns an error row for a truly empty conversation', async () => { 33 mockGetConversationDetail.mockResolvedValue({ 34 messages: [], 35 meeting: null, 36 }); 37 const result = await detail.func({}, { id: '1234567890' }); 38 expect(result).toEqual([ 39 { Role: 'System', Text: 'No messages found. Verify the conversation ID.' }, 40 ]); 41 }); 42 });