import test from 'node:test' import assert from 'node:assert/strict' import { readSource } from './helpers.ts' import { parseCurrentUser } from '../src/api/session-model.ts' test('test_task_023_current_user_adapter_normal_primary_path', () => { // 正常主路径:Java data:{item} 信封解出当前用户。 const user = parseCurrentUser({ success: true, data: { item: { id: 1, username: 'admin', role: 'super_admin' } }, }) assert.equal(user.id, 1) assert.equal(user.username, 'admin') assert.equal(user.role, 'super_admin') }) test('test_task_023_current_user_adapter_normal_variant_input', () => { // 正常变体:无 data 的 {item} 信封同样可解。 const user = parseCurrentUser({ success: true, item: { id: 3, username: '张伟恒', role: 'admin' } }) assert.equal(user.username, '张伟恒') assert.equal(user.role, 'admin') }) test('test_task_023_current_user_adapter_normal_repeated_operation_is_idempotent', () => { // 正常重复:解析不修改输入、结果稳定。 const payload = { success: true, data: { item: { id: 2, username: 'u', role: 'normal' } } } assert.deepEqual(parseCurrentUser(payload), parseCurrentUser(payload)) assert.deepEqual(payload, { success: true, data: { item: { id: 2, username: 'u', role: 'normal' } } }) }) test('test_task_023_current_user_adapter_boundary_empty_input', () => { // 边界空值:响应缺 id 视为无效并抛可操作错误。 assert.throws(() => parseCurrentUser({ success: true, data: { item: {} } }), /缺少有效 id/) assert.throws(() => parseCurrentUser(null), /缺少有效 id|请求失败/) }) test('test_task_023_current_user_adapter_boundary_single_item', () => { // 边界单元素:单用户最小字段即可。 const user = parseCurrentUser({ data: { item: { id: 9, username: 'root', role: 'super_admin' } } }) assert.equal(user.username, 'root') }) test('test_task_023_current_user_adapter_boundary_limit_or_missing_field', () => { // 边界上限/缺字段:success=false 被拒绝并带后端 message。 assert.throws( () => parseCurrentUser({ success: false, message: '未登录', code: 401 }), /未登录/, ) }) test('test_task_023_current_user_adapter_invalid_input_rejected', () => { // 异常输入:缺 role/username 不应崩溃;缺 id 拒绝。 const user = parseCurrentUser({ data: { item: { id: 5, username: '', role: '' } } }) assert.equal(user.username, '') assert.throws(() => parseCurrentUser({ data: { item: { username: 'no-id' } } }), /缺少有效 id/) }) test('test_task_023_current_user_adapter_dependency_failure_returns_actionable_message', () => { // 依赖失败:会话请求适配消费同一解析器;纯解析模块不含 axios 副作用。 const session = readSource('src/api/session.ts') assert.match(session, /parseCurrentUser/) const model = readSource('src/api/session-model.ts') assert.match(model, /import \{ unwrap \} from '\.\/envelope(?:\.ts)?'/) })