fix(knowledge): separate creation management and selection
This commit is contained in:
1 parent
a589a864d7
commit
8e0e52f30e
11 files changed
+223
-112
No files matched your search
@@ -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,14 +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(screen.getByRole('button', { name: '从电脑上传', exact: true })).toBeDisabled();
|
||||
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 向量化由平台承担,不计入用户用量、词元点数或智能体费用上限');
|
||||
@@ -35,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', () => {
|
||||
@@ -64,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);
|
||||
});
|
||||
|
||||
@@ -78,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('管理员配置说明');
|
||||
|
||||
Reference in new issue
Block a user