test(wave189): preset_bgm 预设BGM库 +44测 #1151

Merged
xiaoxia merged 2 commits from test/wave189-preset-bgm into develop 2026-07-30 00:24:11 +08:00
Owner

wave189: preset_bgm 预设BGM库单测

  • 模块:packages/domain/preset_bgm.py
  • 新增测试:44个
  • 覆盖:
    • PresetBGM frozen dataclass(默认值/不可变/相等性)
    • PRESET_BGM_LIBRARY 清单(10条预设验证、ID唯一、风格分布)
    • BGM_STYLES 风格字典
    • get_preset_bgm / list_preset_bgm_by_style 函数
    • search_preset_bgm 关键词搜索(名称/描述/标签)
  • 本地验证:ruff + black + pytest 44 passed
## wave189: preset_bgm 预设BGM库单测 - 模块:packages/domain/preset_bgm.py - 新增测试:44个 - 覆盖: - PresetBGM frozen dataclass(默认值/不可变/相等性) - PRESET_BGM_LIBRARY 清单(10条预设验证、ID唯一、风格分布) - BGM_STYLES 风格字典 - get_preset_bgm / list_preset_bgm_by_style 函数 - search_preset_bgm 关键词搜索(名称/描述/标签) - 本地验证:ruff + black + pytest 44 passed
xiaoxia added 1 commit 2026-07-29 18:50:20 +08:00
test(wave189): preset_bgm 预设BGM库 +44测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 18s
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
AI Code Review / AI Code Review (pull_request) Successful in 52s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m9s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m8s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 41s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m15s
CI/CD Pipeline / Validate - Code Quality (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 / 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
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
72651cabc4

🚀 预览环境已部署

项目 详情
PR号 #1151
预览链接 https://pr-1151.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1151 | | 预览链接 | [https://pr-1151.preview.xiaoxiajianji.com](https://pr-1151.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-07-29 19:01:06 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 25s
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 1m34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m42s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m29s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m45s
AI Code Review / AI Code Review (pull_request) Successful in 2m33s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m45s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m41s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m27s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m14s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 9m21s
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 5m35s
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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 20s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 41s
e06112dfb6
Collaborator

代码审查结果 - PR #1151

⚠️ 问题(1个需要修改)

  1. tests/unit/domain/test_preset_bgm.py 第95, 104, 110行next() 函数未提供默认值,存在 StopIteration 异常风险。
    • 问题描述:在 test_sunny_morning_presettest_quiet_time_presettest_future_tech_preset 方法中,使用了 next(b for b in PRESET_BGM_LIBRARY if b.id == "...")。如果 PRESET_BGM_LIBRARY 中的数据发生变化(如 ID 被修改或条目被删除),生成器找不到匹配项时会抛出 StopIteration 异常,导致测试用例直接崩溃而非断言失败,掩盖了真正的问题(数据缺失)。
    • 后果:测试稳定性差,数据变更时难以排查是数据问题还是代码问题。
    • 修改建议:为 next() 提供默认值 None,并先断言对象不为 None。例如:
      b = next((b for b in PRESET_BGM_LIBRARY if b.id == "bgm_upbeat_001"), None)
      assert b is not None
      

💡 建议(1个可选)

  1. tests/unit/domain/test_preset_bgm.py 第73-85行:测试用例中的数量断言硬编码了具体数值,增加了维护成本。
    • 具体内容test_upbeat_style_count 等方法中使用了 assert len(upbeats) >= 3 这样的硬编码数字。如果预设库更新,这些测试很容易失败。建议除非业务逻辑严格规定了该风格的最少数量,否则可以仅断言 >= 1,或者将阈值定义为常量。

格式检查通过 | 逻辑审查需修改 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 11:11:33 | 模型:

## 代码审查结果 - PR #1151 ### ⚠️ 问题(1个需要修改) 1. **tests/unit/domain/test_preset_bgm.py 第95, 104, 110行**:`next()` 函数未提供默认值,存在 `StopIteration` 异常风险。 - **问题描述**:在 `test_sunny_morning_preset`、`test_quiet_time_preset` 和 `test_future_tech_preset` 方法中,使用了 `next(b for b in PRESET_BGM_LIBRARY if b.id == "...")`。如果 `PRESET_BGM_LIBRARY` 中的数据发生变化(如 ID 被修改或条目被删除),生成器找不到匹配项时会抛出 `StopIteration` 异常,导致测试用例直接崩溃而非断言失败,掩盖了真正的问题(数据缺失)。 - **后果**:测试稳定性差,数据变更时难以排查是数据问题还是代码问题。 - **修改建议**:为 `next()` 提供默认值 `None`,并先断言对象不为 None。例如: ```python b = next((b for b in PRESET_BGM_LIBRARY if b.id == "bgm_upbeat_001"), None) assert b is not None ``` ### 💡 建议(1个可选) 1. **tests/unit/domain/test_preset_bgm.py 第73-85行**:测试用例中的数量断言硬编码了具体数值,增加了维护成本。 - **具体内容**:`test_upbeat_style_count` 等方法中使用了 `assert len(upbeats) >= 3` 这样的硬编码数字。如果预设库更新,这些测试很容易失败。建议除非业务逻辑严格规定了该风格的最少数量,否则可以仅断言 `>= 1`,或者将阈值定义为常量。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 11:11:33 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit c2329f3f98 into develop 2026-07-30 00:24:11 +08:00

🗑️ 预览环境已清理

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

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

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