task-35(会话/菜单/权限):
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
import test from 'node:test'
|
||||||
|
import assert from 'node:assert/strict'
|
||||||
|
import { readSource } from './helpers.ts'
|
||||||
|
import {
|
||||||
|
EMPTY_MENU_DESCRIPTION,
|
||||||
|
EMPTY_MENU_TITLE,
|
||||||
|
shouldShowEmptyMenu,
|
||||||
|
} from '../src/layout/empty-state.ts'
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_normal_primary_path', () => {
|
||||||
|
// 正常主路径:会话完成、无菜单且非加载时展示无菜单空态。
|
||||||
|
assert.equal(shouldShowEmptyMenu(false, false, true), true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_normal_variant_input', () => {
|
||||||
|
// 正常变体:有菜单时即使初始化完成也不展示空态。
|
||||||
|
assert.equal(shouldShowEmptyMenu(true, false, true), false)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_normal_repeated_operation_is_idempotent', () => {
|
||||||
|
// 正常重复:纯函数结果稳定、无副作用。
|
||||||
|
assert.equal(shouldShowEmptyMenu(false, false, true), shouldShowEmptyMenu(false, false, true))
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_boundary_empty_input', () => {
|
||||||
|
// 边界空值:未初始化 / 空态参数缺失时不误闪空态。
|
||||||
|
assert.equal(shouldShowEmptyMenu(false, false, false), false, '未初始化完成不展示空态')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_boundary_single_item', () => {
|
||||||
|
// 边界单元素:加载中即便无菜单也不闪空态(防闪烁)。
|
||||||
|
assert.equal(shouldShowEmptyMenu(false, true, true), false, '加载中不闪空态')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_boundary_limit_or_missing_field', () => {
|
||||||
|
// 边界上限/缺字段:初始状态(空菜单、未初始化、未加载)同样不展示。
|
||||||
|
assert.equal(shouldShowEmptyMenu(false, false, false), false)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_invalid_input_rejected', () => {
|
||||||
|
// 异常输入:参数类型异常时仍安全返回布尔,不抛错。
|
||||||
|
assert.equal(shouldShowEmptyMenu(0 as unknown as boolean, 0 as unknown as boolean, 1 as unknown as boolean), true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('test_task_035_no_menu_user_state_dependency_failure_returns_actionable_message', () => {
|
||||||
|
// 依赖失败:初始化失败不落成无菜单空态(由错误条提示);文案指向联系管理员。
|
||||||
|
assert.equal(EMPTY_MENU_TITLE, '暂无可用菜单')
|
||||||
|
assert.match(EMPTY_MENU_DESCRIPTION, /管理员/)
|
||||||
|
const store = readSource('src/stores/admin-session.ts')
|
||||||
|
assert.match(store, /error:/, 'store 保存失败错误而非置空菜单')
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user