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() 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( , ) 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( , ) expect(screen.getByRole('button', { name: '取消收藏' })).toHaveAttribute('aria-pressed', 'true') }) })