fix: test

This commit is contained in:
fullex 2025-10-29 14:45:55 +08:00
parent f3a279d8de
commit 3e9d9f16d6
5 changed files with 28 additions and 16 deletions

View File

@ -1,5 +1,5 @@
import { Button } from '@cherrystudio/ui'
import { memo, useCallback, useMemo, useState } from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next'
import styled from 'styled-components'
@ -20,18 +20,12 @@ const ExpandableText = ({
setIsExpanded((prev) => !prev)
}, [])
const button = useMemo(() => {
return (
<Button variant="ghost" onClick={toggleExpand} className="self-end">
{isExpanded ? t('common.collapse') : t('common.expand')}
</Button>
)
}, [isExpanded, t, toggleExpand])
return (
<Container ref={ref} style={style} $expanded={isExpanded}>
<TextContainer $expanded={isExpanded}>{text}</TextContainer>
{button}
<Button variant="ghost" onClick={toggleExpand} className="self-end">
{isExpanded ? t('common.collapse') : t('common.expand')}
</Button>
</Container>
)
}
@ -48,4 +42,4 @@ const TextContainer = styled.div<{ $expanded?: boolean }>`
line-height: ${(props) => (props.$expanded ? 'unset' : '30px')};
`
export default memo(ExpandableText)
export default ExpandableText

View File

@ -12,8 +12,8 @@ vi.mock('react-i18next', () => ({
// Mock ImageToolButton
vi.mock('../ImageToolButton', () => ({
default: vi.fn(({ tooltip, onPress, icon }) => (
<button type="button" onClick={onPress} role="button" aria-label={tooltip}>
default: vi.fn(({ tooltip, onClick, icon }) => (
<button type="button" onClick={onClick} role="button" aria-label={tooltip}>
{icon}
</button>
))

View File

@ -9,6 +9,15 @@ vi.mock('react-i18next', () => ({
useTranslation: () => ({ t: (k: string) => k })
}))
// mock @cherrystudio/ui Button component
vi.mock('@cherrystudio/ui', () => ({
Button: ({ children, onPress, ...props }: any) => (
<button type="button" onClick={onPress} {...props}>
{children}
</button>
)
}))
describe('ExpandableText', () => {
const TEXT = 'This is a long text for testing.'

View File

@ -120,7 +120,7 @@ const WebviewSearch: FC<WebviewSearchProps> = ({ webviewRef, isWebviewReady, app
return
}
try {
target.findInPage(text, options)
target.findInPage(text, options || {})
} catch (error) {
logger.error('findInPage failed', { error })
window.toast?.error(t('common.error'))

View File

@ -19,6 +19,15 @@ vi.mock('react-i18next', () => ({
})
}))
// mock @cherrystudio/ui Button component to handle onClick
vi.mock('@cherrystudio/ui', () => ({
Button: ({ children, onClick, disabled, ...props }: any) => (
<button type="button" onClick={onClick} disabled={disabled} {...props}>
{children}
</button>
)
}))
const createWebviewMock = () => {
const listeners = new Map<string, Set<(event: Event & { result?: Electron.FoundInPageResult }) => void>>()
const findInPageMock = vi.fn()
@ -255,7 +264,7 @@ describe('WebviewSearch', () => {
await user.type(input, 'Cherry')
await waitFor(() => {
expect(findInPageMock).toHaveBeenCalledWith('Cherry', undefined)
expect(findInPageMock).toHaveBeenCalledWith('Cherry', {})
})
await act(async () => {
@ -307,7 +316,7 @@ describe('WebviewSearch', () => {
await user.type(input, 'Cherry')
await waitFor(() => {
expect(findInPageMock).toHaveBeenCalledWith('Cherry', undefined)
expect(findInPageMock).toHaveBeenCalledWith('Cherry', {})
})
findInPageMock.mockClear()