diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/__tests__/integration.spec.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/__tests__/integration.spec.tsx
index dbf201670b..0c0ed13685 100644
--- a/web/app/components/workflow/nodes/knowledge-retrieval/__tests__/integration.spec.tsx
+++ b/web/app/components/workflow/nodes/knowledge-retrieval/__tests__/integration.spec.tsx
@@ -4,7 +4,7 @@ import type {
MetadataShape,
} from '../types'
import type { DataSet, MetadataInDoc } from '@/models/datasets'
-import { fireEvent, render, screen } from '@testing-library/react'
+import { fireEvent, render, screen, waitFor, within } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import {
ChunkingMode,
@@ -265,6 +265,13 @@ vi.mock('../components/metadata/metadata-panel', () => ({
}))
describe('knowledge-retrieval path', () => {
+ const getDatasetItem = () => {
+ const datasetItem = screen.getByText('Dataset Name').closest('.group\\/dataset-item')
+ if (!(datasetItem instanceof HTMLElement))
+ throw new Error('Dataset item container not found')
+ return datasetItem
+ }
+
beforeEach(() => {
vi.clearAllMocks()
mockHasEditPermissionForDataset.mockReturnValue(true)
@@ -293,28 +300,46 @@ describe('knowledge-retrieval path', () => {
])
})
- it('should support editing and removing a dataset item', async () => {
+ it('should support editing a dataset item', async () => {
const user = userEvent.setup()
const onChange = vi.fn()
- const onRemove = vi.fn()
render(
,
)
expect(screen.getByText('Dataset Name')).toBeInTheDocument()
- fireEvent.mouseOver(screen.getByText('Dataset Name').closest('.group\\/dataset-item')!)
+ const datasetItem = getDatasetItem()
+ fireEvent.mouseOver(datasetItem)
- const buttons = screen.getAllByRole('button')
- await user.click(buttons[0]!)
- await user.click(screen.getByText('save-settings'))
- await user.click(buttons[1]!)
+ await user.click(within(datasetItem).getByRole('button', { name: 'common.operation.edit' }))
+ await user.click(await screen.findByRole('button', { name: 'save-settings' }))
- expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ name: 'Updated Dataset' }))
+ await waitFor(() => {
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ name: 'Updated Dataset' }))
+ })
+ })
+
+ it('should support removing a dataset item', async () => {
+ const user = userEvent.setup()
+ const onRemove = vi.fn()
+
+ render(
+ ,
+ )
+
+ const datasetItem = getDatasetItem()
+ fireEvent.mouseOver(datasetItem)
+
+ await user.click(within(datasetItem).getByRole('button', { name: 'common.operation.remove' }))
expect(onRemove).toHaveBeenCalled()
})
@@ -338,8 +363,9 @@ describe('knowledge-retrieval path', () => {
/>,
)
- fireEvent.mouseOver(screen.getByText('Dataset Name').closest('.group\\/dataset-item')!)
- await user.click(screen.getAllByRole('button')[1]!)
+ const datasetItem = getDatasetItem()
+ fireEvent.mouseOver(datasetItem)
+ await user.click(within(datasetItem).getByRole('button', { name: 'common.operation.remove' }))
expect(onChange).toHaveBeenCalledWith([])
})
diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx
index c865a49ba9..f0f0d3191a 100644
--- a/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx
+++ b/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx
@@ -85,6 +85,8 @@ const DatasetItem: FC = ({
{
editable && (
{
e.stopPropagation()
showSettingsModal()
@@ -95,6 +97,8 @@ const DatasetItem: FC = ({
)
}
setIsDeleteHovered(true)}