Files
Jyotisha/tests/test_minute_rectification_source_audit.py
T
2026-07-21 22:44:59 +08:00

45 lines
1.7 KiB
Python

import json
from pathlib import Path
from scripts.minute_rectification_source_audit import build_source_audit
ROOT = Path(__file__).resolve().parents[1]
def test_source_audit_deduplicates_public_aa_cases_and_reports_missing_evidence(tmp_path):
manifest = tmp_path / "cases.json"
manifest.write_text(json.dumps({
"cases": [
{
"case_id": "case-a",
"subject": {"name": "A", "birth_source": {"url": "https://birth.example/a", "time_accuracy_rating": "AA"}},
"event_outcomes": [{"event_date": "2000-01-01"}],
},
{
"case_id": "case-a-duplicate",
"subject": {"name": "A", "birth_source": {"url": "https://birth.example/a", "time_accuracy_rating": "AA"}},
"event_outcomes": [{"event_date": "2001-01-01"}],
},
{
"case_id": "case-b",
"subject": {"name": "B", "birth_source": {"url": "https://birth.example/b", "time_accuracy_rating": "A"}},
},
],
}), encoding="utf-8")
audit = build_source_audit([manifest])
assert audit["public_aa_case_count"] == 1
assert audit["cases"][0]["subject"] == "A"
assert audit["cases"][0]["additional_dated_events_required"] == 1
assert audit["cases"][0]["negative_controls_required"] == 4
def test_frozen_source_audit_matches_the_reusable_public_case_manifests():
artifact = json.loads((ROOT / "references/real_case_calibration/minute_rectification_public_aa_source_audit_v1.json").read_text(encoding="utf-8"))
assert artifact == build_source_audit()
assert artifact["public_aa_case_count"] == 17
assert artifact["additional_public_aa_cases_required"] == 3