Files
crucible-agent-build-phase-2/tests/test_agent.py

32 lines
1.6 KiB
Python

import json, tempfile, unittest
from pathlib import Path
from landing_zone_agent.generator import generate
from landing_zone_agent.validation import validate_requirements
class AgentTests(unittest.TestCase):
def setUp(self):
self.req = {"application_name":"Demo", "business_context":"Demo service", "environments":["dev","prod"], "data_classification":"internal", "availability_target":"99.9%", "components":["API","DB"]}
def test_generates_tsd_and_drawio(self):
result = generate(self.req)
self.assertIn("# Technical Solution Design: Demo", result["tsd"])
self.assertIn("Security, resilience, and operations", result["tsd"])
self.assertTrue(result["drawio"].startswith("<mxfile"))
self.assertIn("<mxGraphModel>", result["drawio"])
self.assertTrue(result["manifest"]["validation"]["drawio"])
def test_missing_field_is_actionable(self):
with self.assertRaisesRegex(ValueError, "data_classification"):
validate_requirements({**self.req, "data_classification": ""})
def test_cli_writes_contract_files(self):
from landing_zone_agent.cli import main
with tempfile.TemporaryDirectory() as directory:
req_path = Path(directory) / "req.json"; out = Path(directory) / "out"
req_path.write_text(json.dumps(self.req), encoding="utf-8")
self.assertEqual(main(["--requirements", str(req_path), "--output-dir", str(out)]), 0)
self.assertEqual({p.name for p in out.iterdir()}, {"tsd.md", "architecture.drawio", "manifest.json"})
if __name__ == "__main__":
unittest.main()