/ clis / doubao / detail.test.js
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  });