Auto-Coding-Agent / tests /test_agent_controller.py
Ashoklumarsimhadri's picture
uplode it
3523f69 verified
Raw
History Blame
2.85 kB
from __future__ import annotations
import asyncio
import os
import unittest
from unittest.mock import patch
from app.services.agent_controller import agent_controller
class AgentControllerTests(unittest.TestCase):
def test_analyze_idea_returns_stack_and_questions(self) -> None:
result = agent_controller.analyze_idea("Build a dashboard for a small team")
self.assertIn("understanding", result)
self.assertIn("suggestedStack", result)
self.assertIn("questions", result)
self.assertIsInstance(result["questions"], list)
self.assertTrue(result["suggestedStack"]["backend"])
def test_finalize_requirements_normalizes_partial_answers(self) -> None:
result = agent_controller.finalize_requirements(
"Build a starter app",
{"database": "postgres", "backend_framework": "node", "authentication": "yes"},
{
"language": "Auto",
"frontend": "React",
"backend": "FastAPI",
"database": "SQLite",
"aiTools": "Auto",
"deployment": "Render",
},
)
self.assertEqual(result["selectedStack"]["database"], "PostgreSQL")
self.assertEqual(result["selectedStack"]["backend"], "Express")
self.assertIn("authentication-ready", result["finalRequirements"])
def test_plan_project_structure_covers_full_stack(self) -> None:
context = agent_controller._build_idea_context(
"Build a customer portal",
selected_stack={
"language": "Python",
"frontend": "React",
"backend": "FastAPI",
"database": "SQLite",
"aiTools": "None",
"deployment": "Render",
},
final_requirements="Include a simple dashboard.",
)
plan = agent_controller.plan_project_structure(context, {})
self.assertEqual(plan.selected_stack["frontend"], "React")
self.assertEqual(plan.selected_stack["backend"], "FastAPI")
self.assertTrue(any(file["path"].startswith("frontend/") for file in plan.files))
self.assertTrue(any(file["path"].startswith("backend/") for file in plan.files))
def test_generate_files_falls_back_without_ollama(self) -> None:
with patch.dict(os.environ, {"OLLAMA_BASE_URL": ""}, clear=False):
preview = asyncio.run(
agent_controller.generate_files(
"Build a task tracker",
generation_mode="fast",
)
)
self.assertIn("projectName", preview)
self.assertTrue(any("fallback" in item.lower() for item in preview["assumptions"]))
self.assertTrue(preview["files"])
if __name__ == "__main__":
unittest.main()