70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from mais_humana.catalog import get_platform
|
|
from mais_humana.cli import main
|
|
from mais_humana.insights import build_insights, dependency_dot, insights_markdown
|
|
from mais_humana.matrix import build_global_recommendations, build_matrix, build_platform_reports
|
|
from mais_humana.orders import build_exit_orders, order_markdown
|
|
from mais_humana.scanner import scan_platform
|
|
from tests.helpers import make_tmp
|
|
|
|
|
|
class OrdersInsightsCliTests(unittest.TestCase):
|
|
def make_reports(self, root: Path):
|
|
for platform_id in ("identity", "business"):
|
|
platform = get_platform(platform_id)
|
|
repo = root / platform.repo_name
|
|
repo.mkdir()
|
|
(repo / "README.md").write_text(
|
|
f"# {platform.title}\nhealth readiness audit trace screen support invoice entitlement",
|
|
encoding="utf-8",
|
|
)
|
|
(repo / "src").mkdir()
|
|
(repo / "src" / "index.ts").write_text(
|
|
"export const routes = [{ path: '/health' }, { path: '/openapi' }];\n",
|
|
encoding="utf-8",
|
|
)
|
|
scans = tuple(scan_platform(root, get_platform(pid)) for pid in ("identity", "business"))
|
|
cells = build_matrix(scans)
|
|
return build_platform_reports(scans, cells)
|
|
|
|
def test_orders_are_created_from_recommendations(self) -> None:
|
|
tmp = make_tmp()
|
|
reports = self.make_reports(tmp)
|
|
recommendations = build_global_recommendations(reports)
|
|
orders = build_exit_orders(recommendations)
|
|
self.assertGreaterEqual(len(orders), 2)
|
|
markdown = order_markdown(orders[0], "central", "tudo-para-ia-mais-humana")
|
|
self.assertIn("ORDEM DE SERVICO", markdown)
|
|
self.assertIn("criterio de pronto", markdown.lower())
|
|
|
|
def test_insights_include_risks_roadmap_and_dependencies(self) -> None:
|
|
tmp = make_tmp()
|
|
reports = self.make_reports(tmp)
|
|
recommendations = build_global_recommendations(reports)
|
|
insights = build_insights(reports, recommendations)
|
|
self.assertTrue(insights.dependencies)
|
|
self.assertTrue(insights.risks)
|
|
self.assertTrue(insights.roadmap)
|
|
self.assertIn("digraph", dependency_dot(insights))
|
|
self.assertIn("Roadmap", insights_markdown(insights))
|
|
|
|
def test_cli_env_returns_success(self) -> None:
|
|
tmp = make_tmp()
|
|
code = main(["env", "--ecosystem-root", str(tmp)])
|
|
self.assertEqual(code, 0)
|
|
|
|
def test_cli_sql_counts_handles_empty_missing_file(self) -> None:
|
|
tmp = make_tmp()
|
|
missing = tmp / "missing.sqlite"
|
|
code = main(["sql-counts", "--sqlite", str(missing)])
|
|
self.assertEqual(code, 0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|