auto-sync: tudo-para-ia-mais-humana 2026-05-02 07:24:14
This commit is contained in:
87
tests/test_canonical_migration.py
Normal file
87
tests/test_canonical_migration.py
Normal file
@@ -0,0 +1,87 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import unittest
|
||||
|
||||
from mais_humana.canonical_migration import (
|
||||
AcceptanceStatus,
|
||||
CANONICAL_PROJECT_ID,
|
||||
CURRENT_PROJECT_ID,
|
||||
build_canonical_migration_plan,
|
||||
build_migration_acceptance_cases,
|
||||
migration_plan_markdown,
|
||||
migration_plan_payload,
|
||||
)
|
||||
from mais_humana.cli import main
|
||||
from mais_humana.storage import table_counts
|
||||
from tests.helpers import make_tmp
|
||||
|
||||
|
||||
class CanonicalMigrationTests(unittest.TestCase):
|
||||
def test_runtime_plan_models_canonical_aliases_and_controls(self) -> None:
|
||||
plan = build_canonical_migration_plan(use_generated=False)
|
||||
|
||||
self.assertEqual(plan.canonical_project_id, CANONICAL_PROJECT_ID)
|
||||
self.assertEqual(plan.current_project_id, CURRENT_PROJECT_ID)
|
||||
self.assertGreaterEqual(plan.controls_count, 8)
|
||||
self.assertGreaterEqual(len(plan.acceptance_cases), 2000)
|
||||
self.assertIn("SEC_E_NO_CREDENTIALS", plan.blockers)
|
||||
self.assertIn("Plano de migracao canonica", migration_plan_markdown(plan, limit_cases=3))
|
||||
|
||||
def test_owner_platform_alias_requires_canonical_rewrite(self) -> None:
|
||||
cases = build_migration_acceptance_cases()
|
||||
matching = [
|
||||
case
|
||||
for case in cases
|
||||
if case.target_name == CANONICAL_PROJECT_ID
|
||||
and case.field_name == "ownerPlatformId"
|
||||
and case.candidate_value == CURRENT_PROJECT_ID
|
||||
]
|
||||
|
||||
self.assertTrue(matching)
|
||||
self.assertTrue(all(case.accepted for case in matching))
|
||||
self.assertTrue(any(case.status == AcceptanceStatus.CANONICAL_FIELD_REWRITE_REQUIRED for case in matching))
|
||||
|
||||
def test_payload_is_compact_but_preserves_totals(self) -> None:
|
||||
plan = build_canonical_migration_plan(use_generated=False)
|
||||
payload = migration_plan_payload(plan, limit_cases=5)
|
||||
|
||||
self.assertEqual(payload["canonical_project_id"], CANONICAL_PROJECT_ID)
|
||||
self.assertEqual(len(payload["acceptance_cases"]), 5)
|
||||
self.assertEqual(payload["acceptance_cases_total"], len(plan.acceptance_cases))
|
||||
self.assertIn(CURRENT_PROJECT_ID, payload["accepted_project_ids"])
|
||||
|
||||
def test_cli_writes_project_central_and_sql_artifacts(self) -> None:
|
||||
root = make_tmp()
|
||||
project = root / "tudo-para-ia-mais-humana"
|
||||
central = root / "central" / "15_repo_tudo-para-ia-mais-humana-platform"
|
||||
|
||||
code = main(
|
||||
[
|
||||
"canonical-migration-plan",
|
||||
"--project-root",
|
||||
str(project),
|
||||
"--central-platform-folder",
|
||||
str(central),
|
||||
"--no-generated",
|
||||
"--limit",
|
||||
"3",
|
||||
]
|
||||
)
|
||||
|
||||
self.assertEqual(code, 0)
|
||||
self.assertTrue((project / "dados" / "canonical-migration-plan.json").exists())
|
||||
self.assertTrue((project / "matrizes" / "canonical-migration-acceptance-cases.csv").exists())
|
||||
self.assertTrue((project / "matrizes" / "canonical-migration-controls.csv").exists())
|
||||
self.assertTrue((project / "ecossistema" / "CANONICAL-MIGRATION-PLAN.md").exists())
|
||||
self.assertTrue((central / "reports" / "EXECUTADO__canonical-migration-plan.md").exists())
|
||||
payload = json.loads((project / "dados" / "canonical-migration-plan.json").read_text(encoding="utf-8"))
|
||||
self.assertEqual(payload["canonical_project_id"], CANONICAL_PROJECT_ID)
|
||||
self.assertGreaterEqual(payload["acceptance_cases_total"], 2000)
|
||||
self.assertGreaterEqual(table_counts(project / "controle-semantico.sqlite").get("files", 0), 4)
|
||||
self.assertGreaterEqual(table_counts(central / "controle-semantico.sqlite").get("files", 0), 1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user