mirror of
https://github.com/langgenius/dify.git
synced 2026-02-24 18:05:11 +00:00
Compare commits
1 Commits
dependabot
...
1-21-test-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b2964a0dd |
@@ -41,6 +41,14 @@ const createDefaultCrawlOptions = (overrides: Partial<CrawlOptions> = {}): Crawl
|
|||||||
...overrides,
|
...overrides,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const createDeferred = <T,>() => {
|
||||||
|
let resolve!: (value: T) => void
|
||||||
|
const promise = new Promise<T>((res) => {
|
||||||
|
resolve = res
|
||||||
|
})
|
||||||
|
return { promise, resolve }
|
||||||
|
}
|
||||||
|
|
||||||
const createCrawlResultItem = (overrides: Partial<CrawlResultItem> = {}): CrawlResultItem => ({
|
const createCrawlResultItem = (overrides: Partial<CrawlResultItem> = {}): CrawlResultItem => ({
|
||||||
title: 'Test Page Title',
|
title: 'Test Page Title',
|
||||||
markdown: '# Test Content\n\nThis is test markdown content.',
|
markdown: '# Test Content\n\nThis is test markdown content.',
|
||||||
@@ -393,7 +401,15 @@ describe('WaterCrawl', () => {
|
|||||||
it('should update controlFoldOptions when step changes', async () => {
|
it('should update controlFoldOptions when step changes', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const mockCreateTask = createWatercrawlTask as Mock
|
const mockCreateTask = createWatercrawlTask as Mock
|
||||||
mockCreateTask.mockImplementation(() => new Promise(() => { /* pending */ }))
|
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
||||||
|
const deferredCreateTask = createDeferred<{ job_id: string }>()
|
||||||
|
mockCreateTask.mockImplementation(() => deferredCreateTask.promise)
|
||||||
|
mockCheckStatus.mockResolvedValueOnce({
|
||||||
|
status: 'completed',
|
||||||
|
current: 0,
|
||||||
|
total: 0,
|
||||||
|
data: [],
|
||||||
|
})
|
||||||
|
|
||||||
const props = createDefaultProps()
|
const props = createDefaultProps()
|
||||||
|
|
||||||
@@ -411,6 +427,11 @@ describe('WaterCrawl', () => {
|
|||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText(/totalPageScraped/i)).toBeInTheDocument()
|
expect(screen.getByText(/totalPageScraped/i)).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deferredCreateTask.resolve({ job_id: 'test-job' })
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(mockCheckStatus).toHaveBeenCalled()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -1091,8 +1112,14 @@ describe('WaterCrawl', () => {
|
|||||||
const mockCreateTask = createWatercrawlTask as Mock
|
const mockCreateTask = createWatercrawlTask as Mock
|
||||||
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
||||||
|
|
||||||
mockCreateTask.mockResolvedValueOnce({ job_id: 'zero-current-job' })
|
const deferredCreateTask = createDeferred<{ job_id: string }>()
|
||||||
mockCheckStatus.mockImplementation(() => new Promise(() => { /* never resolves */ }))
|
mockCreateTask.mockImplementation(() => deferredCreateTask.promise)
|
||||||
|
mockCheckStatus.mockResolvedValueOnce({
|
||||||
|
status: 'completed',
|
||||||
|
current: 0,
|
||||||
|
total: 0,
|
||||||
|
data: [],
|
||||||
|
})
|
||||||
|
|
||||||
const props = createDefaultProps({
|
const props = createDefaultProps({
|
||||||
crawlOptions: createDefaultCrawlOptions({ limit: 10 }),
|
crawlOptions: createDefaultCrawlOptions({ limit: 10 }),
|
||||||
@@ -1108,6 +1135,11 @@ describe('WaterCrawl', () => {
|
|||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText(/totalPageScraped.*0\/10/)).toBeInTheDocument()
|
expect(screen.getByText(/totalPageScraped.*0\/10/)).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deferredCreateTask.resolve({ job_id: 'zero-current-job' })
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(mockCheckStatus).toHaveBeenCalled()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should handle crawlResult with zero total and empty limit', async () => {
|
it('should handle crawlResult with zero total and empty limit', async () => {
|
||||||
@@ -1115,8 +1147,14 @@ describe('WaterCrawl', () => {
|
|||||||
const mockCreateTask = createWatercrawlTask as Mock
|
const mockCreateTask = createWatercrawlTask as Mock
|
||||||
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
||||||
|
|
||||||
mockCreateTask.mockResolvedValueOnce({ job_id: 'zero-total-job' })
|
const deferredCreateTask = createDeferred<{ job_id: string }>()
|
||||||
mockCheckStatus.mockImplementation(() => new Promise(() => { /* never resolves */ }))
|
mockCreateTask.mockImplementation(() => deferredCreateTask.promise)
|
||||||
|
mockCheckStatus.mockResolvedValueOnce({
|
||||||
|
status: 'completed',
|
||||||
|
current: 0,
|
||||||
|
total: 0,
|
||||||
|
data: [],
|
||||||
|
})
|
||||||
|
|
||||||
const props = createDefaultProps({
|
const props = createDefaultProps({
|
||||||
crawlOptions: createDefaultCrawlOptions({ limit: '0' }),
|
crawlOptions: createDefaultCrawlOptions({ limit: '0' }),
|
||||||
@@ -1132,6 +1170,11 @@ describe('WaterCrawl', () => {
|
|||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText(/totalPageScraped.*0\/0/)).toBeInTheDocument()
|
expect(screen.getByText(/totalPageScraped.*0\/0/)).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deferredCreateTask.resolve({ job_id: 'zero-total-job' })
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(mockCheckStatus).toHaveBeenCalled()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should handle undefined crawlResult data in finished state', async () => {
|
it('should handle undefined crawlResult data in finished state', async () => {
|
||||||
@@ -1168,8 +1211,14 @@ describe('WaterCrawl', () => {
|
|||||||
const mockCreateTask = createWatercrawlTask as Mock
|
const mockCreateTask = createWatercrawlTask as Mock
|
||||||
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
||||||
|
|
||||||
mockCreateTask.mockResolvedValueOnce({ job_id: 'no-total-job' })
|
const deferredCreateTask = createDeferred<{ job_id: string }>()
|
||||||
mockCheckStatus.mockImplementation(() => new Promise(() => { /* never resolves */ }))
|
mockCreateTask.mockImplementation(() => deferredCreateTask.promise)
|
||||||
|
mockCheckStatus.mockResolvedValueOnce({
|
||||||
|
status: 'completed',
|
||||||
|
current: 0,
|
||||||
|
total: 15,
|
||||||
|
data: [],
|
||||||
|
})
|
||||||
|
|
||||||
const props = createDefaultProps({
|
const props = createDefaultProps({
|
||||||
crawlOptions: createDefaultCrawlOptions({ limit: 15 }),
|
crawlOptions: createDefaultCrawlOptions({ limit: 15 }),
|
||||||
@@ -1185,6 +1234,11 @@ describe('WaterCrawl', () => {
|
|||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText(/totalPageScraped.*0\/15/)).toBeInTheDocument()
|
expect(screen.getByText(/totalPageScraped.*0\/15/)).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deferredCreateTask.resolve({ job_id: 'no-total-job' })
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(mockCheckStatus).toHaveBeenCalled()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should handle crawlResult with current=0 and total=0 during running', async () => {
|
it('should handle crawlResult with current=0 and total=0 during running', async () => {
|
||||||
@@ -1193,6 +1247,12 @@ describe('WaterCrawl', () => {
|
|||||||
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
||||||
|
|
||||||
mockCreateTask.mockResolvedValueOnce({ job_id: 'both-zero-job' })
|
mockCreateTask.mockResolvedValueOnce({ job_id: 'both-zero-job' })
|
||||||
|
const deferredStatus = createDeferred<{
|
||||||
|
status: string
|
||||||
|
current: number
|
||||||
|
total: number
|
||||||
|
data: CrawlResultItem[]
|
||||||
|
}>()
|
||||||
mockCheckStatus
|
mockCheckStatus
|
||||||
.mockResolvedValueOnce({
|
.mockResolvedValueOnce({
|
||||||
status: 'running',
|
status: 'running',
|
||||||
@@ -1200,7 +1260,7 @@ describe('WaterCrawl', () => {
|
|||||||
total: 0,
|
total: 0,
|
||||||
data: [],
|
data: [],
|
||||||
})
|
})
|
||||||
.mockImplementationOnce(() => new Promise(() => { /* never resolves */ }))
|
.mockImplementationOnce(() => deferredStatus.promise)
|
||||||
|
|
||||||
const props = createDefaultProps({
|
const props = createDefaultProps({
|
||||||
crawlOptions: createDefaultCrawlOptions({ limit: 5 }),
|
crawlOptions: createDefaultCrawlOptions({ limit: 5 }),
|
||||||
@@ -1216,6 +1276,16 @@ describe('WaterCrawl', () => {
|
|||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText(/totalPageScraped/)).toBeInTheDocument()
|
expect(screen.getByText(/totalPageScraped/)).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deferredStatus.resolve({
|
||||||
|
status: 'completed',
|
||||||
|
current: 0,
|
||||||
|
total: 0,
|
||||||
|
data: [],
|
||||||
|
})
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(mockCheckStatus).toHaveBeenCalledTimes(2)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -1496,8 +1566,14 @@ describe('WaterCrawl', () => {
|
|||||||
const mockCreateTask = createWatercrawlTask as Mock
|
const mockCreateTask = createWatercrawlTask as Mock
|
||||||
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
const mockCheckStatus = checkWatercrawlTaskStatus as Mock
|
||||||
|
|
||||||
mockCreateTask.mockResolvedValueOnce({ job_id: 'progress-job' })
|
const deferredCreateTask = createDeferred<{ job_id: string }>()
|
||||||
mockCheckStatus.mockImplementation(() => new Promise(() => { /* pending */ }))
|
mockCreateTask.mockImplementation(() => deferredCreateTask.promise)
|
||||||
|
mockCheckStatus.mockResolvedValueOnce({
|
||||||
|
status: 'completed',
|
||||||
|
current: 0,
|
||||||
|
total: 10,
|
||||||
|
data: [],
|
||||||
|
})
|
||||||
|
|
||||||
const props = createDefaultProps({
|
const props = createDefaultProps({
|
||||||
crawlOptions: createDefaultCrawlOptions({ limit: 10 }),
|
crawlOptions: createDefaultCrawlOptions({ limit: 10 }),
|
||||||
@@ -1513,6 +1589,11 @@ describe('WaterCrawl', () => {
|
|||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText(/totalPageScraped.*0\/10/)).toBeInTheDocument()
|
expect(screen.getByText(/totalPageScraped.*0\/10/)).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deferredCreateTask.resolve({ job_id: 'progress-job' })
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(mockCheckStatus).toHaveBeenCalled()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should display time consumed after crawl completion', async () => {
|
it('should display time consumed after crawl completion', async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user