Files
tudo-para-ia-mais-humana-pl…/tests/test_evidence_index.py
2026-04-30 06:42:00 -03:00

56 lines
2.2 KiB
Python

from __future__ import annotations
import unittest
from pathlib import Path
from mais_humana.catalog import get_platform
from mais_humana.evidence_index import (
EvidenceQuery,
build_evidence_index,
evidence_counts_by_kind,
evidence_gap_summary,
evidence_markdown,
evidence_records_for_human_surface,
query_evidence,
)
from mais_humana.scanner import scan_platform
from tests.helpers import make_tmp
class EvidenceIndexTests(unittest.TestCase):
def test_index_can_be_queried_by_platform_kind_and_text(self) -> None:
root = make_tmp()
repo = root / "tudo-para-ia-identity-platform"
repo.mkdir()
(repo / "README.md").write_text("identity RBAC credentialRef audit trace health readiness", encoding="utf-8")
(repo / "src.ts").write_text("export const route = { path: '/identity/health' };\n", encoding="utf-8")
scan = scan_platform(root, get_platform("identity"))
records = build_evidence_index((scan,))
self.assertTrue(records)
identity_records = query_evidence(records, EvidenceQuery(platform_id="identity"))
self.assertEqual(len(identity_records), len(records))
security = query_evidence(records, EvidenceQuery(kind="security"))
self.assertTrue(security)
text = query_evidence(records, EvidenceQuery(text="health"))
self.assertTrue(text)
def test_index_markdown_and_gap_summary_are_stable(self) -> None:
root = make_tmp()
repo = root / "tudo-para-ia-business-platform"
repo.mkdir()
(repo / "README.md").write_text("business invoice entitlement checkout health", encoding="utf-8")
scan = scan_platform(root, get_platform("business"))
records = build_evidence_index((scan,))
counts = evidence_counts_by_kind(records)
self.assertTrue(counts)
markdown = evidence_markdown(records)
self.assertIn("Indice de evidencias", markdown)
surface_records = evidence_records_for_human_surface(records)
self.assertLessEqual(len(surface_records), len(records))
gaps = evidence_gap_summary(records, ("business", "identity"))
self.assertTrue(any("identity" in gap for gap in gaps))
if __name__ == "__main__":
unittest.main()