test(domain): wave196 小模块批量单测 +74 #1160

Merged
xiaoxia merged 2 commits from test/wave196-auth-session-store into develop 2026-07-30 00:25:01 +08:00
Owner

变更说明

批量为 domain 层 5 个小模块添加 74 个单元测试:

  1. bgm_utils (26测) - merge_bgm_config 合并逻辑
    • 空输入、基础合并、enabled特殊处理、不修改原字典、嵌套字典
  2. exceptions (18测) - 4个异常类
    • DomainError/NotFoundError/ValidationError/QuotaExceededError
  3. template_version (12测) - EditTemplateVersion
    • create()工厂、直接构造、slots、相等性
  4. email_config (6测) - EmailConfig dataclass
  5. auth ports (12测) - 6个ABC接口
    • SessionStorePort/EmailServicePort/JWTServicePort/PasswordHasherPort/PasswordValidatorPort/SmsService

测试统计

  • 新增测试:74
  • 全部通过
## 变更说明 批量为 domain 层 5 个小模块添加 74 个单元测试: 1. **bgm_utils** (26测) - merge_bgm_config 合并逻辑 - 空输入、基础合并、enabled特殊处理、不修改原字典、嵌套字典 2. **exceptions** (18测) - 4个异常类 - DomainError/NotFoundError/ValidationError/QuotaExceededError 3. **template_version** (12测) - EditTemplateVersion - create()工厂、直接构造、slots、相等性 4. **email_config** (6测) - EmailConfig dataclass 5. **auth ports** (12测) - 6个ABC接口 - SessionStorePort/EmailServicePort/JWTServicePort/PasswordHasherPort/PasswordValidatorPort/SmsService ## 测试统计 - 新增测试:74 - 全部通过 ✅
xiaoxia added 1 commit 2026-07-29 21:56:59 +08:00
test(domain): add wave196 small modules unit tests (+74)
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 15s
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 1m16s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m40s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m5s
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
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
7f7a66899b
Batch add unit tests for 5 small domain modules:
- bgm_utils: merge_bgm_config (26 tests)
- exceptions: DomainError/NotFoundError/ValidationError/QuotaExceededError (18 tests)
- template_version: EditTemplateVersion create/construction/slots/equality (12 tests)
- email_config: EmailConfig dataclass (6 tests)
- auth ports: 6 ABC interfaces (SessionStore/Email/JWT/PasswordHasher/PasswordValidator/SmsService) (12 tests)
auto-approve-bot added 1 commit 2026-07-29 22:02:13 +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 14s
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 - Type Check (mypy) (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m33s
AI Code Review / AI Code Review (pull_request) Successful in 1m24s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m4s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m25s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m40s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m29s
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 3m28s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m23s
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 / Unit Tests (pull_request) Successful in 4m19s
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 Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (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 3m17s
CI/CD Pipeline / CI Gate (pull_request) Successful in 23s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m0s
13a1070fbc
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [tests/unit/domain/test_bgm_utils.py: 第40-44行] 建议补充不可变性断言
    • 具体内容:在 test_user_none_returns_templatetest_template_none_returns_user 测试用例中,建议增加 assert result is not templateassert result is not user 的断言。
    • 理由:同类测试 test_user_empty_returns_template_copytest_template_empty_returns_user_copy 已经验证了函数返回的是新对象(副本)而非原引用。为了保证逻辑一致性,避免因后续修改实现导致返回引用而引发的副作用(如原字典被意外修改),None 输入的场景也应遵循“返回副本”的原则并进行验证。

良好实践

  • 测试覆盖全面:对抽象基类(ABC)的测试非常规范,涵盖了实例化检查、抽象方法检查及子类实现验证。
  • 边界条件测试test_bgm_utils.py 中对空字典、None值、嵌套字典等边界情况进行了细致的测试。
  • 防御性编程:在 TestEditTemplateVersionSlots 中同时捕获 AttributeErrorTypeError,增强了测试对不同 Python 版本或实现的兼容性。

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


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

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_bgm_utils.py: 第40-44行] 建议补充不可变性断言** - 具体内容:在 `test_user_none_returns_template` 和 `test_template_none_returns_user` 测试用例中,建议增加 `assert result is not template` 和 `assert result is not user` 的断言。 - 理由:同类测试 `test_user_empty_returns_template_copy` 和 `test_template_empty_returns_user_copy` 已经验证了函数返回的是新对象(副本)而非原引用。为了保证逻辑一致性,避免因后续修改实现导致返回引用而引发的副作用(如原字典被意外修改),None 输入的场景也应遵循“返回副本”的原则并进行验证。 ### ✅ 良好实践 - **测试覆盖全面**:对抽象基类(ABC)的测试非常规范,涵盖了实例化检查、抽象方法检查及子类实现验证。 - **边界条件测试**:`test_bgm_utils.py` 中对空字典、None值、嵌套字典等边界情况进行了细致的测试。 - **防御性编程**:在 `TestEditTemplateVersionSlots` 中同时捕获 `AttributeError` 和 `TypeError`,增强了测试对不同 Python 版本或实现的兼容性。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 14:09:24 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1160 | | 预览链接 | [https://pr-1160.preview.xiaoxiajianji.com](https://pr-1160.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia merged commit 63d4048354 into develop 2026-07-30 00:25:01 +08:00

🗑️ 预览环境已清理

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

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

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