feat: add KnowledgeConfirmDialog component and integrate delete confirmation dialog in KnowledgePage

This commit is contained in:
duanshuwen
2026-04-19 10:45:42 +08:00
parent 89f8637db2
commit ba1580caba
5 changed files with 174 additions and 9 deletions

View File

@@ -21,7 +21,6 @@ vi.mock('../src/pages/Knowledge/copy', () => ({
'knowledge.storageLabel': 'Storage',
'knowledge.refresh': 'Refresh',
'knowledge.upload': 'Upload',
'knowledge.uploadHint': 'Knowledge docs only',
'knowledge.status.loading': 'Loading documents...',
'knowledge.status.uploading': 'Uploading...',
'knowledge.status.deleting': 'Deleting...',
@@ -29,7 +28,10 @@ vi.mock('../src/pages/Knowledge/copy', () => ({
'knowledge.status.deleteSuccess': 'Deleted',
'knowledge.emptyTitle': 'No documents yet',
'knowledge.emptyDescription': 'Upload a file',
'knowledge.deleteConfirm': 'Delete this document?',
'knowledge.deleteDialog.title': 'Delete document?',
'knowledge.deleteDialog.confirm': 'Delete document',
'knowledge.deleteDialog.close': 'Close dialog',
'knowledge.common.cancel': 'Cancel',
'knowledge.table.name': 'Name',
'knowledge.table.size': 'Size',
'knowledge.table.modifiedAt': 'Modified At',
@@ -42,6 +44,10 @@ vi.mock('../src/pages/Knowledge/copy', () => ({
return `Knowledge docs request failed: ${params?.error ?? ''}`;
}
if (path === 'knowledge.deleteDialog.description') {
return `This will permanently remove "${params?.name ?? ''}" from the local knowledge docs directory.`;
}
return dictionary[path] ?? fallback ?? path;
},
}));
@@ -53,7 +59,6 @@ describe('KnowledgePage', () => {
apiMocks.list.mockReset();
apiMocks.upload.mockReset();
apiMocks.delete.mockReset();
vi.stubGlobal('confirm', vi.fn(() => true));
});
it('loads and renders docs from the knowledge docs api', async () => {
@@ -87,6 +92,7 @@ describe('KnowledgePage', () => {
const deleteButton = await screen.findByRole('button', { name: /delete/i });
fireEvent.click(deleteButton);
fireEvent.click(screen.getByRole('button', { name: 'Delete document' }));
await waitFor(() => {
expect(apiMocks.delete).toHaveBeenCalledWith('guide.md');