test: add comprehensive tests (#31649)

Co-authored-by: CodingOnStar <hanxujiang@dify.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Coding On Star
2026-01-29 11:16:26 +08:00
committed by GitHub
parent b48a10d7ec
commit 8f414af34e
68 changed files with 18982 additions and 2105 deletions

View File

@ -1,6 +1,6 @@
import type { ErrorDocsResponse } from '@/models/datasets'
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { retryErrorDocs } from '@/service/datasets'
import { useDatasetErrorDocs } from '@/service/knowledge/use-dataset'
import RetryButton from './index-failed'
@ -19,6 +19,11 @@ vi.mock('@/service/datasets', () => ({
const mockUseDatasetErrorDocs = vi.mocked(useDatasetErrorDocs)
const mockRetryErrorDocs = vi.mocked(retryErrorDocs)
afterEach(() => {
cleanup()
vi.clearAllMocks()
})
// Helper to create mock query result
const createMockQueryResult = (
data: ErrorDocsResponse | undefined,
@ -139,6 +144,11 @@ describe('RetryButton (IndexFailed)', () => {
document_ids: ['doc1', 'doc2'],
})
})
// Wait for all state updates to complete
await waitFor(() => {
expect(mockRefetch).toHaveBeenCalled()
})
})
it('should refetch error docs after successful retry', async () => {
@ -202,8 +212,13 @@ describe('RetryButton (IndexFailed)', () => {
const retryButton = screen.getByText(/retry/i)
fireEvent.click(retryButton)
// Wait for retry to complete and state to update
await waitFor(() => {
expect(mockRetryErrorDocs).toHaveBeenCalled()
})
// Button should still be visible after failed retry
await waitFor(() => {
// Button should still be visible after failed retry
expect(screen.getByText(/retry/i)).toBeInTheDocument()
})
})
@ -275,6 +290,11 @@ describe('RetryButton (IndexFailed)', () => {
document_ids: [],
})
})
// Wait for all state updates to complete
await waitFor(() => {
expect(mockRefetch).toHaveBeenCalled()
})
})
})
})