Implement Apex Agent MVP scaffold
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from core.device_manager import DeviceManager
|
||||
from core.models import Task
|
||||
from storage.task_metadata import TaskMetadataStore
|
||||
from tests.fakes import FakeDriver
|
||||
|
||||
|
||||
def test_rest_start_task_and_poll_until_complete(tmp_path) -> None:
|
||||
pytest.importorskip("fastapi")
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from api.rest import create_app
|
||||
|
||||
driver = FakeDriver()
|
||||
manager = DeviceManager()
|
||||
manager.register_device("iphone-1", lambda: driver)
|
||||
manager.connect("iphone-1", max_retries=1)
|
||||
store = TaskMetadataStore(tmp_path / "tasks.sqlite3")
|
||||
|
||||
class CompletingRunner:
|
||||
def run(self, task: Task) -> None:
|
||||
store.update_task(task.id, status="completed", completed=True)
|
||||
|
||||
app = create_app(
|
||||
manager=manager,
|
||||
metadata_store=store,
|
||||
task_runner=CompletingRunner(),
|
||||
)
|
||||
client = TestClient(app)
|
||||
|
||||
response = client.post(
|
||||
"/agent/task",
|
||||
json={"goal": "search", "device_id": "iphone-1"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
task_id = response.json()["task_id"]
|
||||
|
||||
status_response = client.get(f"/task/{task_id}")
|
||||
assert status_response.status_code == 200
|
||||
assert status_response.json()["status"] == "completed"
|
||||
|
||||
Reference in New Issue
Block a user