AgentEvalTool/tests/unit/test_target_repository.py
sinohqb 3705945a7d test: 完整测试覆盖补全(+163 用例)
架构重构(候选 1-6):
- storage/repository.py 按域拆分为包(target/scenario/run/campaign/result)
- storage/db.py 按域拆分为包(eval/campaign/file/model_config/intelligent_eval)
- intelligent_eval/lifecycle.py 按状态机阶段拆分为包
- services/runs.py 编排逻辑下沉
- Campaigns.tsx 拆分为 campaigns/ 子组件

测试补全(候选 7):
前端(+125 用例,107→232):
- utils/ 纯函数:date/campaignTime/ruleLabels/fileTree/fileFormat/colors
- stores/tabStore 状态管理
- 核心组件:FormDrawer/PageWrapper/ChatBubble/GeneratedMessages/SectionHeader/StatCard/TurnList
- 业务组件:CaseBlock/CaseDetail/RuleOverview/WindowTimeline/RunList/TabBar/CampaignRunTimeline
- 文件管理:FileCategoryTree/FileTable
- hooks:sessionReducer/useFiles/useRunSession

后端(+38 用例,916→954):
- targets API CRUD + 404 路径
- WebSocket 连接管理器
- proxy 头部重写(CSP/X-Frame-Options)
- target 仓储 update 方法
- app 健康检查 + SPA 404
- scenarios 模板端点 + 404
- files API 边缘分支(404 场景 + 500 兜底)
- files service update_category
- 智能评估状态机迁移测试

门禁状态:
- 前端:tsc 干净 + 232 passed
- 后端:954 passed + ruff 全绿
2026-08-24 15:56:09 +08:00

53 lines
1.5 KiB
Python

"""Unit tests for the target repository update method."""
import pytest
from agenteval.models import EvalTarget
from agenteval.storage.db import EvalTargetDB
from agenteval.storage.repository.target import TargetRepository
from sqlmodel import Session, SQLModel, create_engine
@pytest.fixture()
def session():
engine = create_engine("sqlite:///:memory:", connect_args={"check_same_thread": False})
SQLModel.metadata.create_all(engine)
with Session(engine) as s:
yield s
def test_update_existing_target(session):
repo = TargetRepository(session)
target = EvalTarget(name="原名", description="描述")
created = repo.create(target)
created.name = "新名"
created.description = "新描述"
updated = repo.update(created)
assert updated is not None
assert updated.name == "新名"
assert updated.description == "新描述"
def test_update_nonexistent_target_returns_none(session):
repo = TargetRepository(session)
target = EvalTarget(id="non-existent", name="新名")
updated = repo.update(target)
assert updated is None
def test_update_preserves_channel_config(session):
repo = TargetRepository(session)
target = EvalTarget(
name="目标",
channel_config={"base_url": "https://example.com", "token": "secret"},
)
created = repo.create(target)
created.name = "更新后"
updated = repo.update(created)
assert updated is not None
assert updated.channel_config["base_url"] == "https://example.com"
assert updated.channel_config["token"] == "secret"