# 中介黑名单弹窗优化功能测试

## 测试概述

本测试套件用于验证中介黑名单弹窗优化后的功能正确性，主要包括：

1. **新增模式交互**：验证类型选择卡片的用户体验
2. **表单验证**：验证个人/机构类型的字段验证规则
3. **数据同步**：验证机构类型证件号与统一社会信用代码的同步
4. **修改模式锁定**：验证修改时类型不可更改
5. **边界情况处理**：验证各种异常输入的处理

## 运行测试

### 前置条件

1. 后端服务已启动（默认 `http://localhost:8080`）
2. 测试账号可用（`admin/admin123`）
3. 已安装 Node.js

### 安装依赖

```bash
cd doc/scripts
npm install
```

### 执行测试

```bash
# 直接运行测试（输出到控制台）
npm test

# 运行测试并生成报告文件
npm run test:report

# 或者直接使用 Node.js
node test_intermediary_dialog.js
```

## 测试用例说明

| 测试编号 | 测试名称 | 测试目标 | 预期结果 |
|---------|---------|---------|---------|
| 1 | 登录系统 | 获取认证Token | 成功获取Token |
| 2 | 新增个人中介-必填字段 | 验证姓名和证件号必填 | 缺少必填项时被拒绝 |
| 3 | 新增个人中介-字段长度 | 验证字段长度限制 | 超长时被拒绝 |
| 4 | 新增机构中介-证件号同步 | 验证证件号同步到统一社会信用代码 | 两字段值一致 |
| 5 | 新增机构中介-信用代码长度 | 验证统一社会信用代码长度 | 前端限制18位 |
| 6 | 修改个人中介-类型锁定 | 验证修改时类型不可更改 | 类型字段保持不变 |
| 7 | 修改机构中介-类型锁定 | 验证修改时类型不可更改 | 类型字段保持不变 |
| 8 | 新增无类型 | 验证未选择类型无法提交 | 后端拒绝请求 |
| 9 | 查询列表 | 验证数据正确性 | 返回正确的类型分布 |

## 测试报告示例

```
==============================================================
测试1：登录系统
==============================================================
✓ 通过 - 登录成功
  Token: eyJhbGciOiJIUzUxMiJ9...

==============================================================
测试2：新增个人中介 - 验证必填字段
==============================================================
✓ 通过 - 空姓名
  应该被拒绝
✓ 通过 - 空证件号
  应该被拒绝
✓ 通过 - 完整必填字段
  成功创建，ID: 123

...
```

## 功能验证清单

### 前端交互验证

- [ ] 点击新增后显示类型选择卡片
- [ ] 卡片有 hover 效果
- [ ] 点击卡片后表单展开带淡入动画
- [ ] 点击卡片后表单不立即显示验证错误
- [ ] 未选择类型时确定按钮被禁用
- [ ] 个人类型表单显示正确的字段
- [ ] 机构类型表单显示正确的字段
- [ ] 个人类型证件号字段显示正确的占位符："请输入证件号码"
- [ ] 机构类型证件号字段显示正确的占位符："统一社会信用代码（18位）"
- [ ] 证件号输入框后无提示图标

### 表单验证验证

- [ ] 个人类型姓名必填验证
- [ ] 个人类型证件号必填验证
- [ ] 机构类型名称必填验证
- [ ] 机构类型证件号必填验证
- [ ] 机构类型证件号长度限制18位
- [ ] 备注字段长度限制500字符

### 数据同步验证

- [ ] 机构类型输入证件号后自动同步到统一社会信用代码
- [ ] 提交时两个字段值一致

### 修改模式验证

- [ ] 修改时直接显示对应类型表单
- [ ] 修改时不显示类型选择器
- [ ] 修改时类型字段不可更改

## 故障排查

### 测试失败常见原因

1. **后端服务未启动**
   - 检查 `http://localhost:8080` 是否可访问
   - 检查后端日志是否有错误

2. **认证失败**
   - 确认测试账号密码正确
   - 检查后端是否启用了认证

3. **端口冲突**
   - 修改 `CONFIG.baseURL` 为实际后端地址

4. **依赖缺失**
   - 运行 `npm install` 安装依赖

## 注意事项

1. 测试会创建真实数据，测试结束后会自动清理
2. 请勿在生产环境运行测试
3. 如需修改测试数据，编辑 `CONFIG` 对象
4. 测试报告会保存在 `test_report.txt` 文件中
