fix: isolate settings and unify account controls with Code

This commit is contained in:
鲨鱼辣椒 committed 2026-10-13 15:15:27 +08:00
1 parent 430233f825
commit 2cc542f1f8
32 files changed
+759 -1091

No files matched your search

+5 -5
View File
@@ -1,4 +1,4 @@
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
import { cleanup, fireEvent, render, screen, waitFor, within } from '@testing-library/react';
import { afterEach, beforeEach, expect, it, vi } from 'vitest';
import { CloudKnowledgePanel } from '@/pages/CloudAgents/CloudKnowledge';
@@ -13,13 +13,13 @@ afterEach(cleanup);
function openCreation() {
render(<CloudKnowledgePanel slug={slug} onCreated={() => undefined} />);
fireEvent.click(screen.getByText('上传自己的文件'));
fireEvent.click(screen.getByRole('button', { name: '新建知识库' }));
}
it('explains who configures an empty embedding catalog and refreshes without losing the name', async () => {
api.call.mockResolvedValueOnce(empty).mockResolvedValueOnce(available);
openCreation();
expect(within(screen.getByRole('region', { name: '查看我的知识库' })).getByRole('button', { name: '从电脑上传', exact: true })).toBeDisabled();
expect(await screen.findByText('暂时没有可用的向量模型。Embedding 只在 Yuxi 配置,请联系平台管理员启用后刷新;向量化费用由平台承担,不计入用户用量或智能体费用上限。')).toBeVisible();
expect(screen.getByRole('combobox', { name: '向量模型' })).toBeDisabled();
expect(screen.getByText(/上传到知识库的文档可供/)).toHaveTextContent('embedding 向量化由平台承担,不计入用户用量、词元点数或智能体费用上限');
@@ -34,7 +34,7 @@ it('explains who configures an empty embedding catalog and refreshes without los
expect(screen.getByRole('textbox', { name: '知识库名称' })).toHaveValue('创作资料');
expect(screen.queryByText('管理员配置说明')).not.toBeInTheDocument();
fireEvent.change(screen.getByRole('combobox', { name: '向量模型' }), { target: { value: 'relay:fixture-embedding' } });
expect(screen.getByRole('button', { name: '创建并选用' })).toBeEnabled();
expect(screen.getByRole('button', { name: '创建知识库' })).toBeEnabled();
});
it('shows loading instead of suggesting configuration is missing before the catalog arrives', () => {
@@ -63,7 +63,7 @@ it('clears a removed selection after refresh so a new create cannot use an unava
fireEvent.change(screen.getByRole('combobox', { name: '向量模型' }), { target: { value: 'relay:fixture-embedding' } });
fireEvent.click(screen.getByRole('button', { name: '刷新知识库与模型' }));
await waitFor(() => expect(screen.getByRole('combobox', { name: '向量模型' })).toHaveValue(''));
expect(screen.getByRole('button', { name: '创建并选用' })).toBeDisabled();
expect(screen.getByRole('button', { name: '创建知识库' })).toBeDisabled();
expect(api.call.mock.calls.every(([operation]) => operation === 'knowledge')).toBe(true);
});
@@ -77,7 +77,7 @@ it('preserves an uncertain creation intent when its model disappears on refresh'
await screen.findByRole('option', { name: '资料向量模型' });
fireEvent.change(screen.getByRole('textbox', { name: '知识库名称' }), { target: { value: '创作资料' } });
fireEvent.change(screen.getByRole('combobox', { name: '向量模型' }), { target: { value: 'relay:fixture-embedding' } });
fireEvent.click(screen.getByRole('button', { name: '创建并选用' }));
fireEvent.click(screen.getByRole('button', { name: '创建知识库' }));
await screen.findByRole('alert');
fireEvent.click(screen.getByRole('button', { name: '刷新知识库与模型' }));
await screen.findByText('管理员配置说明');