32 lines
1.6 KiB
Python
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()
|