import test from 'node:test' import assert from 'node:assert/strict' import { isAdminRole, isSuperAdminRole, isSuperUser, roleKind, roleLabel, } from '../src/types/admin.ts' test('test_task_021_type_contract_normal_primary_path', () => { // 正常主路径:真实后端角色串映射到角色域。 assert.equal(roleKind('super_admin'), 'super_admin') assert.equal(isSuperAdminRole('super_admin'), true) assert.equal(isSuperUser({ role: 'super_admin' }), true) }) test('test_task_021_type_contract_normal_variant_input', () => { // 正常变体:admin/normal 归类正确,超级用户判定不为 true。 assert.equal(roleKind('admin'), 'admin') assert.equal(roleKind('normal'), 'normal') assert.equal(isSuperUser({ role: 'admin' }), false) assert.equal(isAdminRole('admin'), true) }) test('test_task_021_type_contract_normal_repeated_operation_is_idempotent', () => { // 正常重复:角色归一稳定。 assert.equal(roleKind('SUPER_ADMIN'), roleKind('super_admin')) assert.equal(roleLabel('admin'), roleLabel(' admin ')) }) test('test_task_021_type_contract_boundary_empty_input', () => { // 边界空值:空角色/空用户不崩溃,归类为 null/非管理员。 assert.equal(roleKind(''), null) assert.equal(roleKind(undefined), null) assert.equal(roleKind(null), null) assert.equal(isSuperUser(null), false) assert.equal(isSuperUser(undefined), false) }) test('test_task_021_type_contract_boundary_single_item', () => { // 边界单元素:单个 super_admin 用户可进全部菜单。 assert.equal(isSuperUser({ role: 'super_admin' }), true) assert.equal(roleLabel('super_admin'), '超级管理员') }) test('test_task_021_type_contract_boundary_limit_or_missing_field', () => { // 边界上限/缺字段:未知角色串不误判为管理员,展示空文案。 assert.equal(roleKind('owner'), null) assert.equal(isAdminRole('owner'), false) assert.equal(roleLabel('owner'), '') }) test('test_task_021_type_contract_invalid_input_rejected', () => { // 异常输入:大小写/空白容忍,非法字符串归类 null。 assert.equal(roleKind(' Super_Admin '), 'super_admin') assert.equal(roleKind('xxx'), null) assert.equal(isSuperAdminRole(''), false) }) test('test_task_021_type_contract_dependency_failure_returns_actionable_message', () => { // 依赖失败:菜单节点契约为分组可无 route、页面必须可路由。 const group = { key: 'admin_group_account', name: '账号权限' } const page = { key: 'admin_users', name: '用户管理', route: '/account/users' } assert.equal('route' in group, false, '分组节点允许无 route') assert.equal(typeof page.route, 'string', '页面节点必须带 route') assert.equal(roleLabel('super_admin').length > 0, true) })