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("", 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()