test(unit): 第71波 - 领域实体扩展测试 Project+Asset+IngestJob+User+AssetLibrary (+57) #869

Merged
xiaoxia merged 2 commits from test/wave71-domain-entities-project-asset-ingest into develop 2026-07-25 11:31:28 +08:00
Owner

内容

  • User:基本字段 + 默认订阅配置(free/3项目/10G) + 非管理员
  • Project:create名称校验(空值/空白) + is_owner/is_shared_with/can_access权限判定
  • AssetLibrary:create成功 + 默认计数为0 + 空名称校验
  • AssetStatus:5个直接值 + 11种兼容映射(uploaded/success/ok/done/fail/running/process等) + None兜底/大小写不敏感/空白strip
  • Asset:create校验(空名/storage_key/mime) + file_type推导(video/image/audio/text) + add_tag去重/空值校验 + remove_tag幂等 + 默认状态/metadata处理
  • IngestJob:create成功 + 默认PENDING状态 + 三个空值校验 + 默认空字段

测试结果

本地 pytest: 57 passed 全绿

### 内容 - **User**:基本字段 + 默认订阅配置(free/3项目/10G) + 非管理员 - **Project**:create名称校验(空值/空白) + is_owner/is_shared_with/can_access权限判定 - **AssetLibrary**:create成功 + 默认计数为0 + 空名称校验 - **AssetStatus**:5个直接值 + 11种兼容映射(uploaded/success/ok/done/fail/running/process等) + None兜底/大小写不敏感/空白strip - **Asset**:create校验(空名/storage_key/mime) + file_type推导(video/image/audio/text) + add_tag去重/空值校验 + remove_tag幂等 + 默认状态/metadata处理 - **IngestJob**:create成功 + 默认PENDING状态 + 三个空值校验 + 默认空字段 ### 测试结果 本地 pytest: **57 passed** 全绿
xiaoxia added 1 commit 2026-07-25 10:09:52 +08:00
test(unit): 第71波 - 领域实体扩展测试 Project+Asset+IngestJob+User+AssetLibrary
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 15s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 45s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 42s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m15s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 31s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 35s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m47s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 42s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 19s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m34s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m10s
AI Code Review / AI Code Review (pull_request) Successful in 3m32s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m28s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m59s
7cfcba8049
- User: 基本字段 + 默认订阅(免费/3项目/10G) + 非管理员
- Project: create/名称校验 + is_owner/is_shared_with/can_access权限
- AssetLibrary: create/默认计数/空名称校验
- AssetStatus: 5个直值 + 11个兼容映射(uploaded/success/done/fail/running等) + None兜底/大小写/空白
- Asset: create校验(空名/storage_key/mime) + file_type推导(video/image/audio) + add_tag去重 + remove_tag幂等 + 默认状态/metadata
- IngestJob: create/默认PENDING/三个空值校验/默认空字段
+57 tests 全绿
xiaoxia added 1 commit 2026-07-25 11:07:34 +08:00
style: fix black formatting for wave71 domain entities tests
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m24s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 59s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m49s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m13s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m3s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m13s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m48s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m42s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 15s
AI Code Review / AI Code Review (pull_request) Successful in 6m16s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m37s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m44s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 49m20s
a0730f689d
Collaborator

📊 审查概览

  • 整体评价:通过
  • 严重问题数量:0 个
  • 一般建议数量:1 个

需修改的问题(严重)

💡 改进建议(一般)

  1. [tests/unit/test_domain_entities_extended.py: 266-279] 枚举兜底逻辑的风险性
    • 具体内容:在 TestAssetStatus 中,测试用例 test_unknown_value_fallback_to_readytest_none_value_fallback 验证了将未知字符串或 None 映射到 AssetStatus.READY 的行为。虽然这可能是为了兼容旧数据或容错,但从数据完整性和安全角度看,静默将无效状态视为“就绪(READY)”可能会掩盖潜在的数据错误(如数据库脏数据)。建议评估是否应该抛出异常或映射到 ERROR/UNKNOWN 状态,以便在数据异常时能及时发现问题。

良好实践

  1. 全面的边界条件测试:代码对空字符串、纯空白字符串、None值、大小写不敏感等边界情况进行了充分的测试覆盖(如 test_create_project_whitespace_name_raisestest_case_insensitive 等)。
  2. 浮点数精度处理:在 test_create_asset_success 中使用了 pytest.approx(30.5) 来比较浮点数,避免了精度问题导致的测试失败,这是非常专业的做法。
  3. 向后兼容性测试:针对 AssetStatus 枚举,专门编写了测试用例(如 test_missing_uploaded_maps_to_ready)来验证旧状态值到新枚举的映射,保证了系统升级的平滑过渡。
  4. 清晰的命名规范:测试方法名(如 test_remove_nonexistent_tag_no_error)准确描述了测试场景和预期结果,极大提升了代码的可读性。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-25 03:21:41 | 模型:

### 📊 审查概览 - **整体评价**:通过 - **严重问题数量**:0 个 - **一般建议数量**:1 个 ### ❌ 需修改的问题(严重) 无 ### 💡 改进建议(一般) 1. **[tests/unit/test_domain_entities_extended.py: 266-279] 枚举兜底逻辑的风险性** - **具体内容**:在 `TestAssetStatus` 中,测试用例 `test_unknown_value_fallback_to_ready` 和 `test_none_value_fallback` 验证了将未知字符串或 `None` 映射到 `AssetStatus.READY` 的行为。虽然这可能是为了兼容旧数据或容错,但从数据完整性和安全角度看,静默将无效状态视为“就绪(READY)”可能会掩盖潜在的数据错误(如数据库脏数据)。建议评估是否应该抛出异常或映射到 `ERROR`/`UNKNOWN` 状态,以便在数据异常时能及时发现问题。 ### ✅ 良好实践 1. **全面的边界条件测试**:代码对空字符串、纯空白字符串、None值、大小写不敏感等边界情况进行了充分的测试覆盖(如 `test_create_project_whitespace_name_raises`、`test_case_insensitive` 等)。 2. **浮点数精度处理**:在 `test_create_asset_success` 中使用了 `pytest.approx(30.5)` 来比较浮点数,避免了精度问题导致的测试失败,这是非常专业的做法。 3. **向后兼容性测试**:针对 `AssetStatus` 枚举,专门编写了测试用例(如 `test_missing_uploaded_maps_to_ready`)来验证旧状态值到新枚举的映射,保证了系统升级的平滑过渡。 4. **清晰的命名规范**:测试方法名(如 `test_remove_nonexistent_tag_no_error`)准确描述了测试场景和预期结果,极大提升了代码的可读性。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-25 03:21:41 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 3204bf2d1f into develop 2026-07-25 11:31:28 +08:00
xiaoxia deleted branch test/wave71-domain-entities-project-asset-ingest 2026-07-25 11:31:28 +08:00

🗑️ 预览环境已清理

PR #869 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #869 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.