chore: tests for annotation (#29664)

This commit is contained in:
Joel 2025-12-15 15:38:04 +08:00 committed by GitHub
parent d942adf3b2
commit a951f46a09
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 196 additions and 0 deletions

View File

@ -0,0 +1,98 @@
import React from 'react'
import { fireEvent, render, screen } from '@testing-library/react'
import ClearAllAnnotationsConfirmModal from './index'
jest.mock('react-i18next', () => ({
useTranslation: () => ({
t: (key: string) => {
const translations: Record<string, string> = {
'appAnnotation.table.header.clearAllConfirm': 'Clear all annotations?',
'common.operation.confirm': 'Confirm',
'common.operation.cancel': 'Cancel',
}
return translations[key] || key
},
}),
}))
beforeEach(() => {
jest.clearAllMocks()
})
describe('ClearAllAnnotationsConfirmModal', () => {
// Rendering visibility toggled by isShow flag
describe('Rendering', () => {
test('should show confirmation dialog when isShow is true', () => {
// Arrange
render(
<ClearAllAnnotationsConfirmModal
isShow
onHide={jest.fn()}
onConfirm={jest.fn()}
/>,
)
// Assert
expect(screen.getByText('Clear all annotations?')).toBeInTheDocument()
expect(screen.getByRole('button', { name: 'Cancel' })).toBeInTheDocument()
expect(screen.getByRole('button', { name: 'Confirm' })).toBeInTheDocument()
})
test('should not render anything when isShow is false', () => {
// Arrange
render(
<ClearAllAnnotationsConfirmModal
isShow={false}
onHide={jest.fn()}
onConfirm={jest.fn()}
/>,
)
// Assert
expect(screen.queryByText('Clear all annotations?')).not.toBeInTheDocument()
})
})
// User confirms or cancels clearing annotations
describe('Interactions', () => {
test('should trigger onHide when cancel is clicked', () => {
const onHide = jest.fn()
const onConfirm = jest.fn()
// Arrange
render(
<ClearAllAnnotationsConfirmModal
isShow
onHide={onHide}
onConfirm={onConfirm}
/>,
)
// Act
fireEvent.click(screen.getByRole('button', { name: 'Cancel' }))
// Assert
expect(onHide).toHaveBeenCalledTimes(1)
expect(onConfirm).not.toHaveBeenCalled()
})
test('should trigger onConfirm when confirm is clicked', () => {
const onHide = jest.fn()
const onConfirm = jest.fn()
// Arrange
render(
<ClearAllAnnotationsConfirmModal
isShow
onHide={onHide}
onConfirm={onConfirm}
/>,
)
// Act
fireEvent.click(screen.getByRole('button', { name: 'Confirm' }))
// Assert
expect(onConfirm).toHaveBeenCalledTimes(1)
expect(onHide).not.toHaveBeenCalled()
})
})
})

View File

@ -0,0 +1,98 @@
import React from 'react'
import { fireEvent, render, screen } from '@testing-library/react'
import RemoveAnnotationConfirmModal from './index'
jest.mock('react-i18next', () => ({
useTranslation: () => ({
t: (key: string) => {
const translations: Record<string, string> = {
'appDebug.feature.annotation.removeConfirm': 'Remove annotation?',
'common.operation.confirm': 'Confirm',
'common.operation.cancel': 'Cancel',
}
return translations[key] || key
},
}),
}))
beforeEach(() => {
jest.clearAllMocks()
})
describe('RemoveAnnotationConfirmModal', () => {
// Rendering behavior driven by isShow and translations
describe('Rendering', () => {
test('should display the confirm modal when visible', () => {
// Arrange
render(
<RemoveAnnotationConfirmModal
isShow
onHide={jest.fn()}
onRemove={jest.fn()}
/>,
)
// Assert
expect(screen.getByText('Remove annotation?')).toBeInTheDocument()
expect(screen.getByRole('button', { name: 'Cancel' })).toBeInTheDocument()
expect(screen.getByRole('button', { name: 'Confirm' })).toBeInTheDocument()
})
test('should not render modal content when hidden', () => {
// Arrange
render(
<RemoveAnnotationConfirmModal
isShow={false}
onHide={jest.fn()}
onRemove={jest.fn()}
/>,
)
// Assert
expect(screen.queryByText('Remove annotation?')).not.toBeInTheDocument()
})
})
// User interactions with confirm and cancel buttons
describe('Interactions', () => {
test('should call onHide when cancel button is clicked', () => {
const onHide = jest.fn()
const onRemove = jest.fn()
// Arrange
render(
<RemoveAnnotationConfirmModal
isShow
onHide={onHide}
onRemove={onRemove}
/>,
)
// Act
fireEvent.click(screen.getByRole('button', { name: 'Cancel' }))
// Assert
expect(onHide).toHaveBeenCalledTimes(1)
expect(onRemove).not.toHaveBeenCalled()
})
test('should call onRemove when confirm button is clicked', () => {
const onHide = jest.fn()
const onRemove = jest.fn()
// Arrange
render(
<RemoveAnnotationConfirmModal
isShow
onHide={onHide}
onRemove={onRemove}
/>,
)
// Act
fireEvent.click(screen.getByRole('button', { name: 'Confirm' }))
// Assert
expect(onRemove).toHaveBeenCalledTimes(1)
expect(onHide).not.toHaveBeenCalled()
})
})
})