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

56 lines
2.3 KiB
Python

from __future__ import annotations
import json
import unittest
from pathlib import Path
from mais_humana.catalog import get_platform
from mais_humana.matrix import build_matrix, build_platform_report
from mais_humana.playbooks import build_playbooks, playbooks_markdown
from mais_humana.quality import evaluate_platform_quality, quality_to_markdown
from mais_humana.questions import questions_for_report, unanswered_questions
from mais_humana.scanner import scan_platform
from tests.helpers import make_tmp
class QualityQuestionsPlaybookTests(unittest.TestCase):
def make_minimal_report(self, root: Path):
repo = root / "tudo-para-ia-docs-plataform"
repo.mkdir()
(repo / "README.md").write_text("docs contract evidence help runbook", encoding="utf-8")
(repo / "package.json").write_text(json.dumps({"scripts": {"test": "node --test"}}), encoding="utf-8")
scan = scan_platform(root, get_platform("docs"))
cells = build_matrix((scan,))
return build_platform_report(scan, cells)
def test_quality_report_flags_known_blocker_and_missing_git(self) -> None:
tmp = make_tmp()
report = self.make_minimal_report(tmp)
quality = evaluate_platform_quality(report)
self.assertGreaterEqual(quality.blocker_count, 1)
markdown = quality_to_markdown((quality,))
self.assertIn("known_blockers", markdown)
self.assertIn("git_ready", markdown)
def test_questions_are_generated_for_profiles(self) -> None:
tmp = make_tmp()
report = self.make_minimal_report(tmp)
questions = questions_for_report(report, max_per_profile=1)
self.assertGreaterEqual(len(questions), 12)
weak = unanswered_questions(questions)
self.assertLessEqual(len(weak), len(questions))
self.assertTrue(all(question.answer for question in questions))
def test_playbooks_turn_recommendations_into_steps(self) -> None:
tmp = make_tmp()
report = self.make_minimal_report(tmp)
playbooks = build_playbooks((report,))
self.assertGreaterEqual(len(playbooks), 12)
text = playbooks_markdown(playbooks)
self.assertIn("Playbooks humanos", text)
self.assertIn("Playbook humano", text)
if __name__ == "__main__":
unittest.main()