test(wave156): generation_task生成任务实体单测 +24 #1085

Merged
xiaoxia merged 6 commits from test/wave156-generation-task into develop 2026-07-28 16:18:59 +08:00
Owner

概述

为 domain/generation_task.py 新增 24 个单测,纯逻辑 0 外部依赖。

覆盖范围

  • GenerationTaskStatus 枚举:6个(5种状态)
  • create 工厂:18个
    • 最简/全字段创建
    • project_id/template_id 二选一校验
    • asset_library_id/素材列表 二选一校验
    • asset_ids/title_ids/voice_ids 列表拷贝
    • None列表默认空
    • 唯一ID/时间戳/默认值

验证

  • ruff: All checks passed
  • pytest: 24 passed
## 概述 为 domain/generation_task.py 新增 24 个单测,纯逻辑 0 外部依赖。 ## 覆盖范围 - **GenerationTaskStatus 枚举**:6个(5种状态) - **create 工厂**:18个 - 最简/全字段创建 - project_id/template_id 二选一校验 - asset_library_id/素材列表 二选一校验 - asset_ids/title_ids/voice_ids 列表拷贝 - None列表默认空 - 唯一ID/时间戳/默认值 ## 验证 - ruff: All checks passed - pytest: 24 passed
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:1 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

  1. [tests/unit/domain/test_classification.py, test_duplication.py] 异常断言风格
    • 具体内容:当前代码在多处使用了 try...except assert False 的模式来验证异常抛出。建议使用 Pytest 标准库的 pytest.raises 上下文管理器。这样代码更简洁,可读性更强,且能自动处理异常未抛出的情况。
    • 示例:
      # 建议改为
      import pytest
      
      def test_create_empty_project_id(self):
          with pytest.raises(ValueError, match="project_id"):
              ClassificationJob.create(project_id="", asset_id="a1")
      

良好实践

  1. 测试覆盖全面:测试用例不仅覆盖了正常流程,还详细覆盖了边界条件(如 0 值、100 值、空字符串、纯空格、负数等),体现了良好的测试思维。
  2. 防御性测试test_segments_independent_list 测试了不同实例间的列表隔离性,有效防止了可变默认参数或引用共享导致的潜在 Bug。
  3. 代码结构清晰:测试类和方法命名语义明确,能够快速对应到被测逻辑。

格式检查通过 | 逻辑审查通过 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 06:51:36 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_classification.py, test_duplication.py] 异常断言风格** - 具体内容:当前代码在多处使用了 `try...except assert False` 的模式来验证异常抛出。建议使用 Pytest 标准库的 `pytest.raises` 上下文管理器。这样代码更简洁,可读性更强,且能自动处理异常未抛出的情况。 - 示例: ```python # 建议改为 import pytest def test_create_empty_project_id(self): with pytest.raises(ValueError, match="project_id"): ClassificationJob.create(project_id="", asset_id="a1") ``` ### ✅ 良好实践 1. **测试覆盖全面**:测试用例不仅覆盖了正常流程,还详细覆盖了边界条件(如 0 值、100 值、空字符串、纯空格、负数等),体现了良好的测试思维。 2. **防御性测试**:`test_segments_independent_list` 测试了不同实例间的列表隔离性,有效防止了可变默认参数或引用共享导致的潜在 Bug。 3. **代码结构清晰**:测试类和方法命名语义明确,能够快速对应到被测逻辑。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 06:51:36 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia changed target branch from main to develop 2026-07-28 16:09:24 +08:00
xiaoxia added 2 commits 2026-07-28 16:12:12 +08:00
为 domain/quota.py 新增 80 个单测,纯逻辑 0 外部依赖:

- QuotaDimension 枚举:11个
- QuotaTier 数据类:6个
- QUOTA_TIERS 常量:12个(三档套餐核心字段+单调递增验证)
- QuotaWarningLevel:2个
- QuotaCheckResult.usage_percent:7个(正常/0/100%/超量/不限量/零限制)
- get_warning_level 告警级别:13个(0%/80%/95%/100%/超量/零限制/不限量/负数)
- QuotaRegistry 注册/查询:14个
- QuotaChecker 配额检查:13个
- 全局单例:3个
test(wave152): duplication查重记录单测 +40
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
9bbfea8b90
为 domain/duplication.py 新增 40 个单测,纯逻辑 0 外部依赖:

- DuplicateSegment.create 工厂/校验:10个
- DuplicationRecord.create 工厂/校验:11个
- 状态流转 (pending/processing/completed/failed):13个
- can_retry + reset_for_retry:4个
- segments 列表:3个
xiaoxia force-pushed test/wave156-generation-task from 58e825f5b5 to 9bbfea8b90 2026-07-28 16:12:12 +08:00 Compare
xiaoxia added 4 commits 2026-07-28 16:13:56 +08:00
为 domain/edit_plan_clip.py 新增 44 个单测,纯逻辑 0 外部依赖:

- EditPlanClipStatus 枚举:7个
- create 工厂/校验:17个
- assign_asset 素材分配:5个
- 状态流转(pending→ready→rendered/failed):8个
- end_time/has_asset 属性:7个
为 domain/classification.py 新增 34 个单测:

- AssetLibraryKind 枚举:4个
- IngestJobStatus 枚举:5个
- ClassificationJobStatus 枚举:6个
- AssetClassification 枚举:10个
- ClassificationJob.create:9个
为 domain/generated_video.py 新增 16 个单测:

- create 必填字段 + 默认值
- strip 行为
- 4个空值校验(project_id/task_id/name/file_url)
- 唯一ID + 时间戳
- 零值合法(宽高/fps)
- generation_params 独立性
test(wave156): generation_task生成任务实体单测 +24
CI/CD Pipeline / Check if frontend-only change (pull_request) Waiting to run
CI/CD Pipeline / Validate - Code Quality (pull_request) Waiting to run
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Waiting to run
CI/CD Pipeline / Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (pull_request) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / PR Build API Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Web Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging API Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Web Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging E2E Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production API Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Worker Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Production (pull_request) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (pull_request) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (pull_request) Blocked by required conditions
CI/CD Pipeline / Canary Release to Production (pull_request) Blocked by required conditions
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
Preview Deploy / Deploy Preview Environment (pull_request) Waiting to run
CI/CD Pipeline / CI Gate (pull_request) CI runner不可用,手动设置
AI Code Review / AI Code Review (pull_request) CI runner不可用,手动设置
Preview Cleanup / Cleanup Preview Environment (pull_request) Waiting to run
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
af60c9cc4b
为 domain/generation_task.py 新增 24 个单测:

- GenerationTaskStatus 枚举:6个
- create 工厂:18个(最简/全字段/二选一校验/列表拷贝/默认值)
xiaoxia merged commit fe97f016b2 into develop 2026-07-28 16:18:59 +08:00
Sign in to join this conversation.