import os
from server import initialize_project, save_database_plan, get_next_pending_task, get_file_instruction, write_component_file
def test_workflow():
print("Testing Project Initialization...")
res = initialize_project("./test_app")
print(res)
print("\nTesting Database Planning...")
models = [
{
"name": "User",
"fields": [{"name": "id", "type": "int"}, {"name": "username", "type": "str"}],
"dependencies": []
},
{
"name": "Post",
"fields": [{"name": "id", "type": "int"}, {"name": "title", "type": "str"}, {"name": "author_id", "type": "int"}],
"dependencies": ["User"]
}
]
res = save_database_plan(models)
print(res)
print("\nTesting Traffic Cop (Pending Task)...")
task = get_next_pending_task()
print(f"Next task: {task}")
assert task["name"] == "User"
print("\nTesting Prompt Generation...")
prompt = get_file_instruction("model", "User")
print("Prompt for User model:")
print(prompt)
print("\nTesting File Writer...")
code = "from sqlmodel import SQLModel, Field\nclass User(SQLModel, table=True):\n id: int = Field(default=None, primary_key=True)\n username: str"
res = write_component_file("model", "User", code)
print(res)
print("\nVerifying State Update...")
task = get_next_pending_task()
print(f"Next task after User done: {task}")
assert task["name"] == "Post"
print("\nTesting Post Model Instruction...")
prompt = get_file_instruction("model", "Post")
print(prompt)
if __name__ == "__main__":
if os.path.exists(".mcp_state.json"):
os.remove(".mcp_state.json")
test_workflow()