/** * @license * Copyright 2025 AionUi (aionui.com) * SPDX-License-Identifier: Apache-2.0 */ import React from 'react'; import { describe, it, expect, vi } from 'vitest'; import { fireEvent, render, screen } from '@testing-library/react'; import { ConfigProvider } from '@arco-design/web-react'; import type { Assistant } from '@/common/types/agent/assistantTypes'; import AssistantSelectionArea from '@/renderer/pages/guid/components/AssistantSelectionArea'; vi.mock('react-i18next', () => ({ useTranslation: () => ({ t: (_key: string, options?: { defaultValue?: string }) => options?.defaultValue || _key, }), })); vi.mock('@/renderer/utils/platform', () => ({ resolveExtensionAssetUrl: vi.fn(() => null), })); describe('AssistantSelectionArea', () => { it('returns the real assistant id when a pill is selected', () => { const onSelectAssistant = vi.fn(); render( ); fireEvent.click(screen.getByTestId('preset-pill-writer')); expect(onSelectAssistant).toHaveBeenCalledWith('writer'); }); it('renders assistant pills in sort_order order', () => { render( ); const presetPills = screen .getAllByTestId(/preset-pill-/) .map((element) => element.getAttribute('data-testid')?.replace('preset-pill-', '')); expect(presetPills).toEqual(['writer', 'cowork']); }); it('prefers localized assistant names for the active locale', () => { render( ); expect(screen.getByText('学术论文助手')).toBeInTheDocument(); expect(screen.queryByText('Academic Paper')).not.toBeInTheDocument(); }); }); function assistants(): Assistant[] { return [ { id: 'cowork', source: 'builtin', name: 'Cowork', name_i18n: {}, description_i18n: {}, enabled: true, sort_order: 20, preset_agent_type: 'claude', enabled_skills: [], custom_skill_names: [], disabled_builtin_skills: [], context_i18n: {}, prompts: [], prompts_i18n: {}, models: [], agent_status: 'online', team_selectable: true, deletable: false, }, { id: 'writer', source: 'user', name: 'Writer', name_i18n: {}, description_i18n: {}, enabled: true, sort_order: 10, preset_agent_type: 'claude', enabled_skills: [], custom_skill_names: [], disabled_builtin_skills: [], context_i18n: {}, prompts: [], prompts_i18n: {}, models: [], agent_status: 'online', team_selectable: true, deletable: true, }, ]; }