atlas-iac/testing/tests/test_local_planning_contracts.py

54 lines
2.1 KiB
Python
Raw Normal View History

"""Reject structurally plausible planning results that lose case traceability."""
import copy
import pytest
from scripts.ops.test_planning.contracts import validate_families, validate_profile, DIMENSIONS
def source(case_id):
return {"campaign_id": "FA01", "suite_id": "S1", "case_id": case_id,
"fields": {"description": "Read mode through RPC."}}
@pytest.fixture
def families():
return {"campaign_id": "FA01", "suite_id": "S1", "families": [
{"member_case_ids": ["C1", "C2"], "objectives": [{"case_id": "C1"}, {"case_id": "C2"}],
"source_evidence": [{"case_id": "C1", "field": "description", "quote": "through RPC"}]}]}
def test_exact_partition_is_accepted(families):
assert validate_families(families, [source("C1"), source("C2")])["case_count"] == 2
@pytest.mark.parametrize("fault", ["omitted", "invented", "duplicate", "owner", "objective", "evidence"])
def test_invalid_case_assignments_cannot_pass(families, fault):
family = families["families"][0]
if fault == "omitted":
family["member_case_ids"].pop()
elif fault == "invented":
family["member_case_ids"].append("C3")
elif fault == "duplicate":
families["families"].append(copy.deepcopy(family))
elif fault == "owner":
families["suite_id"] = "S2"
elif fault == "objective":
family["objectives"][1]["case_id"] = "C1"
else:
family["source_evidence"][0]["quote"] = "invented machinery"
with pytest.raises(ValueError):
validate_families(families, [source("C1"), source("C2")])
def test_profile_evidence_must_come_from_a_real_field():
profile = {"campaign_id": "FA01", "suite_id": "S1", "case_id": "C1",
"facts": {key: None for key in DIMENSIONS}, "inferred_suggestions": []}
profile["facts"]["target_interface"] = [{"value": "RPC", "evidence": [
{"field": "description", "quote": "RPC"}]}]
validate_profile(profile, source("C1"))
profile["facts"]["target_interface"][0]["evidence"][0]["field"] = "unprovided_document"
with pytest.raises(ValueError):
validate_profile(profile, source("C1"))