test(domain): wave195 verification_code 单测 +27 #1159

Merged
xiaoxia merged 2 commits from test/wave195-verification-code into develop 2026-07-30 00:24:55 +08:00
Owner

变更说明

  • 为 VerificationCode domain 实体添加 27 个单元测试
  • 覆盖:create()工厂、is_expired/is_used/is_valid属性、mark_used()、increment_attempts()、构造/slots/相等性

测试统计

  • 新增测试:27
  • 全部通过
## 变更说明 - 为 VerificationCode domain 实体添加 27 个单元测试 - 覆盖:create()工厂、is_expired/is_used/is_valid属性、mark_used()、increment_attempts()、构造/slots/相等性 ## 测试统计 - 新增测试:27 - 全部通过 ✅
xiaoxia added 1 commit 2026-07-29 21:52:27 +08:00
test(domain): add wave195 verification_code unit tests (+27)
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 33s
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 1m35s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m29s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 42s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m6s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m9s
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
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
098257efdc
Add comprehensive unit tests for VerificationCode domain entity:
- create() factory: basic, stripped recipient, custom code/ttl, uniqueness
- is_expired / is_used / is_valid properties
- mark_used() and increment_attempts()
- Direct construction, slots, equality

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1159 | | 预览链接 | [https://pr-1159.preview.xiaoxiajianji.com](https://pr-1159.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-07-29 21:57:39 +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 17s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m15s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m18s
AI Code Review / AI Code Review (pull_request) Successful in 1m19s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m22s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m27s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m57s
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 2m22s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m23s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m12s
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 / 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 / Integration Tests (pull_request) Successful in 2m59s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 26s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 51s
50d74c454e
Collaborator

【阻塞级判定】

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

📊 审查概览

  • 整体评价:有建议
  • 建议级问题数量:2 个

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

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

  1. [tests/unit/domain/test_verification_code.py:238] 未使用的变量导致测试覆盖不完整

    • 具体内容:在 test_mark_used_twice_overwrites 方法中,变量 first 被赋值但从未被使用。测试的注释表明意图是验证重复调用会覆盖时间戳,但当前的断言仅检查了 used_at 不为 None。建议添加断言 assert vc.used_at > first 以确保时间戳确实被更新了。
  2. [tests/unit/domain/test_verification_code.py:229] 建议使用 Mock 替代真实时间以增强确定性

    • 具体内容:在 test_mark_used_sets_timestamp 方法中,使用了 datetime.now(timezone.utc) 来进行边界检查。虽然这在大多数情况下可行,但依赖于系统时钟,在高负载下可能导致测试不稳定。鉴于文件中其他测试(如 test_create_custom_ttl)已成功使用了 patch 模拟时间,建议此处也采用相同方式,以保持测试风格的一致性和绝对的确定性。

良好实践

  • 测试覆盖面广,包含了边界条件(如过期时间精确相等)、唯一性校验以及 __slots__ 限制测试。
  • 使用了 patch 来模拟时间,有效避免了测试对环境时间的依赖。
  • 测试用例命名清晰,结构分明,易于维护。

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

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:有建议 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_verification_code.py:238] 未使用的变量导致测试覆盖不完整** - 具体内容:在 `test_mark_used_twice_overwrites` 方法中,变量 `first` 被赋值但从未被使用。测试的注释表明意图是验证重复调用会覆盖时间戳,但当前的断言仅检查了 `used_at` 不为 None。建议添加断言 `assert vc.used_at > first` 以确保时间戳确实被更新了。 2. **[tests/unit/domain/test_verification_code.py:229] 建议使用 Mock 替代真实时间以增强确定性** - 具体内容:在 `test_mark_used_sets_timestamp` 方法中,使用了 `datetime.now(timezone.utc)` 来进行边界检查。虽然这在大多数情况下可行,但依赖于系统时钟,在高负载下可能导致测试不稳定。鉴于文件中其他测试(如 `test_create_custom_ttl`)已成功使用了 `patch` 模拟时间,建议此处也采用相同方式,以保持测试风格的一致性和绝对的确定性。 ### ✅ 良好实践 - 测试覆盖面广,包含了边界条件(如过期时间精确相等)、唯一性校验以及 `__slots__` 限制测试。 - 使用了 `patch` 来模拟时间,有效避免了测试对环境时间的依赖。 - 测试用例命名清晰,结构分明,易于维护。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 14:03:33 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit e811516c6e into develop 2026-07-30 00:24:55 +08:00

🗑️ 预览环境已清理

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

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

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