gongxiangp2/components/department-dashboard/PermissionsDashboard.test.tsx

28 lines
1.6 KiB
TypeScript

import { fireEvent, render, screen, within } from '@testing-library/react'
import PermissionsDashboard from './PermissionsDashboard'
jest.mock('./DepartmentShell', () => ({ __esModule: true, default: ({ children }: { children: React.ReactNode }) => <div>{children}</div> }))
jest.mock('./PermissionGroupsDashboard', () => ({
__esModule: true,
default: () => <label>待保存组名<input defaultValue="视觉" /></label>,
}))
jest.mock('./UserPermissionsDashboard', () => ({
__esModule: true,
default: () => <label>查找人员<input defaultValue="" /></label>,
}))
test('切换视图保留权限草稿与人员搜索,不暴露隐藏视图控件', () => {
const { rerender } = render(<PermissionsDashboard />)
const nav = screen.getByRole('navigation', { name: '权限管理视图' })
expect(within(nav).getByRole('link', { name: '权限组' })).toHaveAttribute('aria-current', 'page')
fireEvent.change(screen.getByRole('textbox', { name: '待保存组名' }), { target: { value: '设计团队' } })
expect(screen.queryByRole('textbox', { name: '查找人员' })).not.toBeInTheDocument()
rerender(<PermissionsDashboard view="people" />)
fireEvent.change(screen.getByRole('textbox', { name: '查找人员' }), { target: { value: '示例成员' } })
expect(screen.queryByRole('textbox', { name: '待保存组名' })).not.toBeInTheDocument()
rerender(<PermissionsDashboard view="groups" />)
expect(screen.getByRole('textbox', { name: '待保存组名' })).toHaveValue('设计团队')
rerender(<PermissionsDashboard view="people" />)
expect(screen.getByRole('textbox', { name: '查找人员' })).toHaveValue('示例成员')
})