|
|
@@ -0,0 +1,187 @@
|
|
|
+# 故事 013.003:史诗012新增路由连通性集成测试
|
|
|
+
|
|
|
+## 状态
|
|
|
+Ready for Implementation
|
|
|
+
|
|
|
+## 故事
|
|
|
+**作为**系统开发人员,
|
|
|
+**我希望**在server包中创建史诗012新增路由的连通性集成测试,
|
|
|
+**以便**验证这些路由在server包中注册的正确性和系统集成性,确保API端点可正常访问。
|
|
|
+
|
|
|
+## 验收标准
|
|
|
+从史诗文件复制的验收标准编号列表
|
|
|
+
|
|
|
+1. [ ] 新的集成测试文件创建成功,遵循项目测试标准
|
|
|
+2. [ ] 所有史诗012新增的路由连通性测试通过
|
|
|
+3. [ ] 测试仅验证路由注册和连通性,不重复各模块的功能测试
|
|
|
+4. [ ] 现有测试套件无回归,所有测试继续通过
|
|
|
+5. [ ] 代码符合项目编码和测试标准
|
|
|
+
|
|
|
+## 任务 / 子任务
|
|
|
+将故事分解为实施所需的具体任务和子任务。
|
|
|
+在相关处引用适用的验收标准编号。
|
|
|
+
|
|
|
+### 任务1:分析史诗012新增路由并规划测试范围(AC:1,2,3)
|
|
|
+- [ ] 分析server包`src/index.ts`中史诗012新增的路由注册:
|
|
|
+ - `enterpriseAuthApiRoutes` (`/api/v1/yongren/auth`)
|
|
|
+ - `enterpriseCompanyApiRoutes` (`/api/v1/yongren/company`)
|
|
|
+ - `enterpriseDisabilityApiRoutes` (`/api/v1/yongren/disability-person`)
|
|
|
+ - 订单模块中新增的企业相关路由(通过现有`orderApiRoutes`注册)
|
|
|
+- [ ] 确定需要测试的具体端点列表:
|
|
|
+ - 企业用户认证:登录、登出、获取用户信息
|
|
|
+ - 企业统计:概览统计、人才统计
|
|
|
+ - 残疾人扩展:工作历史、薪资历史、征信信息、视频关联
|
|
|
+ - 订单企业功能:打卡统计、视频统计、企业订单、企业视频、批量下载、视频状态更新
|
|
|
+- [ ] 规划测试策略:仅测试路由连通性,不测试具体业务逻辑
|
|
|
+
|
|
|
+### 任务2:创建集成测试文件并实现基础结构(AC:1,5)
|
|
|
+- [ ] 在`packages/server/tests/integration/`目录创建`epic012-routes-connectivity.integration.test.ts`文件
|
|
|
+- [ ] 按照现有集成测试模式设置导入:
|
|
|
+ - 导入`describe`、`it`、`expect` from 'vitest'
|
|
|
+ - 导入`testClient` from 'hono/testing'
|
|
|
+ - 导入相关路由:`enterpriseAuthApiRoutes`、`enterpriseCompanyApiRoutes`、`enterpriseDisabilityApiRoutes`、`orderApiRoutes` from '../../src/index'
|
|
|
+- [ ] 设置测试描述和分组结构,按照路由模块组织测试
|
|
|
+
|
|
|
+### 任务3:实现企业用户认证路由连通性测试(AC:1,2,3)
|
|
|
+- [ ] 测试`POST /api/v1/yongren/auth/login`端点连通性
|
|
|
+- [ ] 测试`POST /api/v1/yongren/auth/logout`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/yongren/auth/me`端点连通性
|
|
|
+- [ ] 遵循现有模式:验证端点可访问(返回200或401状态码),不验证具体业务逻辑
|
|
|
+
|
|
|
+### 任务4:实现企业统计路由连通性测试(AC:1,2,3)
|
|
|
+- [ ] 测试`GET /api/v1/yongren/company/overview`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/yongren/company/{id}/talents`端点连通性(使用测试ID)
|
|
|
+- [ ] 验证路径前缀`/api/v1/yongren/company`正确应用
|
|
|
+
|
|
|
+### 任务5:实现残疾人扩展路由连通性测试(AC:1,2,3)
|
|
|
+- [ ] 测试`GET /api/v1/yongren/disability-person/{id}/work-history`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/yongren/disability-person/{id}/salary-history`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/yongren/disability-person/{id}/credit-info`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/yongren/disability-person/{id}/videos`端点连通性
|
|
|
+- [ ] 验证路径前缀`/api/v1/yongren/disability-person`正确应用
|
|
|
+
|
|
|
+### 任务6:实现订单模块企业功能路由连通性测试(AC:1,2,3)
|
|
|
+- [ ] 测试`GET /api/v1/order/checkin-statistics`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/order/video-statistics`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/order/company-orders`端点连通性
|
|
|
+- [ ] 测试`GET /api/v1/order/company-videos`端点连通性
|
|
|
+- [ ] 测试`POST /api/v1/order/batch-download`端点连通性
|
|
|
+- [ ] 测试`PUT /api/v1/order/videos/{id}/status`端点连通性
|
|
|
+- [ ] 验证这些端点通过现有`orderApiRoutes`正确注册
|
|
|
+
|
|
|
+### 任务7:运行和验证测试结果(AC:1,2,4)
|
|
|
+- [ ] 运行新创建的集成测试:`cd packages/server && pnpm test --testNamePattern "史诗012"`
|
|
|
+- [ ] 确保所有测试通过,验证路由连通性
|
|
|
+- [ ] 运行完整测试套件,确保无回归:`cd packages/server && pnpm test`
|
|
|
+- [ ] 如有测试失败,分析原因并修复(可能是路由注册问题或测试实现问题)
|
|
|
+
|
|
|
+### 任务8:代码审查和文档更新(AC:5)
|
|
|
+- [ ] 确保测试代码符合项目编码标准
|
|
|
+- [ ] 验证测试文件命名和位置符合项目约定
|
|
|
+- [ ] 如有必要,更新相关文档或添加测试说明
|
|
|
+
|
|
|
+## 技术笔记
|
|
|
+
|
|
|
+### 现有系统集成
|
|
|
+- **集成模块**:server包 (`@d8d/server`) 及其路由注册
|
|
|
+- **技术栈**:TypeScript 5.8.3、Hono 4.8.5、Vitest 3.2.4、Testing Library
|
|
|
+- **遵循模式**:
|
|
|
+ - 现有集成测试模式(参考`allin-modules.integration.test.ts`)
|
|
|
+ - Hono RPC客户端测试模式
|
|
|
+ - 仅测试连通性,不测试业务逻辑
|
|
|
+- **接触点**:
|
|
|
+ - `packages/server/src/index.ts`:路由注册入口
|
|
|
+ - `packages/server/tests/integration/`:集成测试目录
|
|
|
+ - 史诗012新增的路由模块:企业认证、企业统计、残疾人扩展、订单企业功能
|
|
|
+
|
|
|
+### 关键约束
|
|
|
+1. **测试范围限制**:仅测试路由注册和连通性,不重复各模块已有的功能测试
|
|
|
+2. **认证中间件**:许多端点需要认证,测试应接受401(未认证)作为有效响应
|
|
|
+3. **路径前缀验证**:确保`/api/v1/yongren`前缀正确应用于史诗012新增路由
|
|
|
+4. **向后兼容**:测试不应影响现有功能,现有测试必须继续通过
|
|
|
+5. **性能影响**:新增测试不应显著增加测试执行时间
|
|
|
+
|
|
|
+### 集成方法
|
|
|
+1. **路由连通性测试**:使用`testClient`调用端点,验证响应状态码(200或401)
|
|
|
+2. **路径前缀验证**:通过实际调用验证完整路径正确性
|
|
|
+3. **模块化测试组织**:按路由模块分组测试,便于维护和定位问题
|
|
|
+4. **最小化断言**:仅验证端点可访问,不验证响应数据细节
|
|
|
+5. **错误处理测试**:接受401状态码作为认证中间件正常工作的证据
|
|
|
+
|
|
|
+## 开发笔记
|
|
|
+仅填充从docs文件夹中的实际工件提取的相关信息,与此故事相关:
|
|
|
+
|
|
|
+### 先前故事洞察
|
|
|
+史诗013中已有故事013.001和013.002完成类型错误修复。本故事关注测试覆盖而非类型修复。
|
|
|
+
|
|
|
+### 已知路由详情
|
|
|
+基于史诗012实现和server包路由注册分析:
|
|
|
+
|
|
|
+1. **企业用户认证路由** (`enterpriseAuthApiRoutes`):
|
|
|
+ - 注册路径:`/api/v1/yongren/auth`
|
|
|
+ - 包含端点:`POST /login`、`POST /logout`、`GET /me`
|
|
|
+ - 中间件:`enterpriseAuthMiddleware`(企业用户认证)
|
|
|
+
|
|
|
+2. **企业统计路由** (`enterpriseCompanyApiRoutes`):
|
|
|
+ - 注册路径:`/api/v1/yongren/company`
|
|
|
+ - 包含端点:`GET /overview`、`GET /{id}/talents`
|
|
|
+ - 中间件:`enterpriseAuthMiddleware`
|
|
|
+
|
|
|
+3. **残疾人扩展路由** (`enterpriseDisabilityApiRoutes`):
|
|
|
+ - 注册路径:`/api/v1/yongren/disability-person`
|
|
|
+ - 包含端点:`GET /{id}/work-history`、`GET /{id}/salary-history`、`GET /{id}/credit-info`、`GET /{id}/videos`
|
|
|
+ - 中间件:`enterpriseAuthMiddleware`
|
|
|
+
|
|
|
+4. **订单模块企业功能**:
|
|
|
+ - 通过现有`orderApiRoutes`注册,路径:`/api/v1/order`
|
|
|
+ - 新增企业相关端点:`/checkin-statistics`、`/video-statistics`、`/company-orders`、`/company-videos`、`/batch-download`、`/videos/{id}/status`
|
|
|
+ - 中间件:`enterpriseAuthMiddleware`
|
|
|
+
|
|
|
+### 测试策略
|
|
|
+1. **连通性验证**:使用`testClient`调用端点,验证返回200(已认证)或401(未认证)
|
|
|
+2. **路径正确性**:通过实际调用验证完整URL路径
|
|
|
+3. **中间件集成**:401响应表明认证中间件正常工作
|
|
|
+4. **错误场景**:不提供认证令牌应返回401,证明路由和中间件正确集成
|
|
|
+
|
|
|
+### 风险缓解
|
|
|
+- **主要风险**:测试可能过于严格,因认证要求而失败
|
|
|
+- **缓解措施**:接受401作为有效响应,仅验证路由注册和中间件集成
|
|
|
+- **次要风险**:测试可能影响现有测试执行时间
|
|
|
+- **缓解措施**:测试数量合理,避免过度测试
|
|
|
+
|
|
|
+### 兼容性验证
|
|
|
+- [ ] 无破坏性API更改(仅添加测试)
|
|
|
+- [ ] 无数据库schema更改(仅测试代码)
|
|
|
+- [ ] 无UI更改(仅后端测试)
|
|
|
+- [ ] 性能影响可忽略(仅增加少量测试)
|
|
|
+
|
|
|
+### 相关技术文档
|
|
|
+- 史诗012文档:`docs/prd/epic-012-api-supplement-for-employer-mini-program.md`
|
|
|
+- 史诗013文档:`docs/prd/epic-013-type-error-fixes.md`
|
|
|
+- 项目架构:`docs/architecture/`
|
|
|
+- 编码标准:`docs/architecture/coding-standards.md`
|
|
|
+- 测试策略:`docs/architecture/coding-standards.md#测试框架`
|
|
|
+
|
|
|
+### 验证检查清单
|
|
|
+
|
|
|
+#### 范围验证
|
|
|
+- [x] 故事可以在一个开发会话中完成(聚焦测试创建)
|
|
|
+- [x] 集成方法直接(遵循现有测试模式)
|
|
|
+- [x] 遵循现有模式(集成测试模式)
|
|
|
+- [x] 无需设计或架构工作(纯测试实现)
|
|
|
+
|
|
|
+#### 清晰度检查
|
|
|
+- [x] 故事需求明确(创建连通性集成测试)
|
|
|
+- [x] 集成点明确指定(史诗012新增路由)
|
|
|
+- [x] 成功标准可测试(测试通过、无回归)
|
|
|
+- [x] 回滚方法简单(删除测试文件)
|
|
|
+
|
|
|
+## 文件列表
|
|
|
+
|
|
|
+### 新建的文件
|
|
|
+1. `packages/server/tests/integration/epic012-routes-connectivity.integration.test.ts` - 史诗012新增路由连通性集成测试
|
|
|
+
|
|
|
+### 测试执行验证
|
|
|
+- 新的集成测试文件创建成功并可通过测试
|
|
|
+- 所有史诗012新增路由连通性验证通过
|
|
|
+- 现有测试套件无回归,所有测试继续通过
|