Spaces:
Sleeping
Sleeping
File size: 1,695 Bytes
b92d20c 6139c83 b92d20c 6139c83 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import pytest
from pydantic import ValidationError
from codereview_env.models import CodeReviewAction, CodeReviewObservation, ReviewFinding
def test_action_requires_artifact_for_open() -> None:
action = CodeReviewAction(action_type="open_artifact", artifact_id="helper_diff")
assert action.action_type == "open_artifact"
assert action.artifact_id == "helper_diff"
def test_submit_review_accepts_structured_findings() -> None:
action = CodeReviewAction(
action_type="submit_review",
findings=[
ReviewFinding(
title="Missing auth",
file_path="api/admin_exports.py",
severity="critical",
rationale="The route trusts user input and can leak another tenant's invoices.",
recommendation="Enforce admin and account scope before export.",
)
],
)
assert len(action.findings) == 1
assert action.findings[0].severity == "critical"
def test_findings_reject_short_rationale() -> None:
with pytest.raises(ValidationError):
ReviewFinding(
title="Bad",
file_path="a.py",
severity="low",
rationale="Too short",
recommendation="Do something better.",
)
def test_observation_has_openenv_fields() -> None:
observation = CodeReviewObservation(
task_id="pagination-regression",
difficulty="easy",
title="Review pagination",
objective="Catch production risk",
summary="Short summary",
step_limit=4,
done=False,
reward=0.05,
)
assert observation.done is False
assert observation.reward == 0.05
|