75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react'
|
|
|
|
import MaterialDetailHeader from '@/components/detail/MaterialDetailHeader'
|
|
|
|
describe('MaterialDetailHeader', () => {
|
|
const defaultProps = {
|
|
title: 'GBSFY-BJ0208',
|
|
materialType: '任务-详情',
|
|
materialId: 'material-1',
|
|
isFavorited: false,
|
|
capabilities: {
|
|
canFavorite: false,
|
|
canEdit: false,
|
|
canDelete: false,
|
|
},
|
|
onBack: jest.fn(),
|
|
onFavorite: jest.fn(),
|
|
onShare: jest.fn(),
|
|
onEdit: jest.fn(),
|
|
onDelete: jest.fn(),
|
|
}
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks()
|
|
})
|
|
|
|
test('匿名详情只显示返回和分享操作', () => {
|
|
render(<MaterialDetailHeader {...defaultProps} />)
|
|
|
|
expect(screen.getByRole('button', { name: '返回上一页' })).toBeInTheDocument()
|
|
expect(screen.getByRole('button', { name: '分享' })).toBeInTheDocument()
|
|
expect(screen.queryByRole('button', { name: '收藏' })).not.toBeInTheDocument()
|
|
expect(screen.queryByRole('button', { name: '编辑' })).not.toBeInTheDocument()
|
|
expect(screen.queryByRole('button', { name: '删除' })).not.toBeInTheDocument()
|
|
})
|
|
|
|
test('按服务端能力显示收藏、编辑和删除操作', () => {
|
|
render(
|
|
<MaterialDetailHeader
|
|
{...defaultProps}
|
|
capabilities={{
|
|
canFavorite: true,
|
|
canEdit: true,
|
|
canDelete: true,
|
|
}}
|
|
/>,
|
|
)
|
|
|
|
fireEvent.click(screen.getByRole('button', { name: '收藏' }))
|
|
fireEvent.click(screen.getByRole('button', { name: '分享' }))
|
|
fireEvent.click(screen.getByRole('button', { name: '编辑' }))
|
|
fireEvent.click(screen.getByRole('button', { name: '删除' }))
|
|
|
|
expect(defaultProps.onFavorite).toHaveBeenCalledTimes(1)
|
|
expect(defaultProps.onShare).toHaveBeenCalledTimes(1)
|
|
expect(defaultProps.onEdit).toHaveBeenCalledTimes(1)
|
|
expect(defaultProps.onDelete).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
test('收藏状态使用可访问的按下语义', () => {
|
|
render(
|
|
<MaterialDetailHeader
|
|
{...defaultProps}
|
|
isFavorited
|
|
capabilities={{
|
|
...defaultProps.capabilities,
|
|
canFavorite: true,
|
|
}}
|
|
/>,
|
|
)
|
|
|
|
expect(screen.getByRole('button', { name: '取消收藏' })).toHaveAttribute('aria-pressed', 'true')
|
|
})
|
|
})
|