"""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"