mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-02 02:09:03 +08:00
test(ThinkingBlock): 移除不再需要的实时计时测试用例
This commit is contained in:
parent
895c30057f
commit
2f3b1d767d
@ -1,7 +1,6 @@
|
|||||||
import type { ThinkingMessageBlock } from '@renderer/types/newMessage'
|
import type { ThinkingMessageBlock } from '@renderer/types/newMessage'
|
||||||
import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage'
|
import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage'
|
||||||
import { render, screen } from '@testing-library/react'
|
import { render, screen } from '@testing-library/react'
|
||||||
import { act } from 'react'
|
|
||||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
|
|
||||||
import ThinkingBlock from '../ThinkingBlock'
|
import ThinkingBlock from '../ThinkingBlock'
|
||||||
@ -240,28 +239,9 @@ describe('ThinkingBlock', () => {
|
|||||||
expect(activeTimeText).toHaveTextContent('Thinking...')
|
expect(activeTimeText).toHaveTextContent('Thinking...')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should update thinking time in real-time when active', () => {
|
|
||||||
const block = createThinkingBlock({
|
|
||||||
thinking_millsec: 1000,
|
|
||||||
status: MessageBlockStatus.STREAMING
|
|
||||||
})
|
|
||||||
renderThinkingBlock(block)
|
|
||||||
|
|
||||||
// Initial state
|
|
||||||
expect(getThinkingTimeText()).toHaveTextContent('1.0s')
|
|
||||||
|
|
||||||
// After time passes
|
|
||||||
act(() => {
|
|
||||||
vi.advanceTimersByTime(500)
|
|
||||||
})
|
|
||||||
|
|
||||||
expect(getThinkingTimeText()).toHaveTextContent('1.5s')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should handle extreme thinking times correctly', () => {
|
it('should handle extreme thinking times correctly', () => {
|
||||||
const testCases = [
|
const testCases = [
|
||||||
{ thinking_millsec: 0, expectedTime: '0.0s' },
|
{ thinking_millsec: 0, expectedTime: '0.0s' },
|
||||||
{ thinking_millsec: undefined, expectedTime: '0.0s' },
|
|
||||||
{ thinking_millsec: 86400000, expectedTime: '86400.0s' }, // 1 day
|
{ thinking_millsec: 86400000, expectedTime: '86400.0s' }, // 1 day
|
||||||
{ thinking_millsec: 259200000, expectedTime: '259200.0s' } // 3 days
|
{ thinking_millsec: 259200000, expectedTime: '259200.0s' } // 3 days
|
||||||
]
|
]
|
||||||
@ -276,38 +256,6 @@ describe('ThinkingBlock', () => {
|
|||||||
unmount()
|
unmount()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should stop timer when thinking status changes to completed', () => {
|
|
||||||
const block = createThinkingBlock({
|
|
||||||
thinking_millsec: 1000,
|
|
||||||
status: MessageBlockStatus.STREAMING
|
|
||||||
})
|
|
||||||
const { rerender } = renderThinkingBlock(block)
|
|
||||||
|
|
||||||
// Advance timer while thinking
|
|
||||||
act(() => {
|
|
||||||
vi.advanceTimersByTime(1000)
|
|
||||||
})
|
|
||||||
expect(getThinkingTimeText()).toHaveTextContent('2.0s')
|
|
||||||
|
|
||||||
// Complete thinking
|
|
||||||
const completedBlock = createThinkingBlock({
|
|
||||||
thinking_millsec: 1000, // Original time doesn't matter
|
|
||||||
status: MessageBlockStatus.SUCCESS
|
|
||||||
})
|
|
||||||
rerender(<ThinkingBlock block={completedBlock} />)
|
|
||||||
|
|
||||||
// Timer should stop - text should change from "Thinking..." to "Thought for"
|
|
||||||
const timeText = getThinkingTimeText()
|
|
||||||
expect(timeText).toHaveTextContent('Thought for')
|
|
||||||
expect(timeText).toHaveTextContent('2.0s')
|
|
||||||
|
|
||||||
// Further time advancement shouldn't change the display
|
|
||||||
act(() => {
|
|
||||||
vi.advanceTimersByTime(1000)
|
|
||||||
})
|
|
||||||
expect(timeText).toHaveTextContent('2.0s')
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('collapse behavior', () => {
|
describe('collapse behavior', () => {
|
||||||
@ -413,16 +361,6 @@ describe('ThinkingBlock', () => {
|
|||||||
expect(screen.queryByText('Markdown: Original thought')).not.toBeInTheDocument()
|
expect(screen.queryByText('Markdown: Original thought')).not.toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should clean up timer on unmount', () => {
|
|
||||||
const block = createThinkingBlock({ status: MessageBlockStatus.STREAMING })
|
|
||||||
const { unmount } = renderThinkingBlock(block)
|
|
||||||
|
|
||||||
const clearIntervalSpy = vi.spyOn(global, 'clearInterval')
|
|
||||||
unmount()
|
|
||||||
|
|
||||||
expect(clearIntervalSpy).toHaveBeenCalled()
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should handle rapid status changes gracefully', () => {
|
it('should handle rapid status changes gracefully', () => {
|
||||||
const block = createThinkingBlock({ status: MessageBlockStatus.STREAMING })
|
const block = createThinkingBlock({ status: MessageBlockStatus.STREAMING })
|
||||||
const { rerender } = renderThinkingBlock(block)
|
const { rerender } = renderThinkingBlock(block)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user