from fastapi.testclient import TestClient from repo_registry.web_api.app import Settings, app, get_settings def test_api_manual_registry_loop(tmp_path): def override_settings(): return Settings(database_path=str(tmp_path / "api.sqlite3")) app.dependency_overrides[get_settings] = override_settings client = TestClient(app) try: repository_response = client.post( "/repos", json={ "name": "MailRouter", "url": "https://example.com/mail-router.git", "description": "Routes incoming customer email", }, ) assert repository_response.status_code == 201 repository_id = repository_response.json()["id"] ability_response = client.post( f"/repos/{repository_id}/abilities", json={ "name": "Business Email Routing", "description": "Route inbound messages.", }, ) assert ability_response.status_code == 201 ability_id = ability_response.json()["id"] capability_response = client.post( f"/repos/{repository_id}/capabilities", json={ "ability_id": ability_id, "name": "Classify Incoming Email", "inputs": ["subject", "body"], "outputs": ["intent"], }, ) assert capability_response.status_code == 201 capability_id = capability_response.json()["id"] feature_response = client.post( f"/repos/{repository_id}/features", json={ "capability_id": capability_id, "name": "POST /api/classify-email", "type": "REST endpoint", "location": "src/routes/classify_email.py", }, ) assert feature_response.status_code == 201 map_response = client.get(f"/repos/{repository_id}/ability-map") assert map_response.status_code == 200 ability_map = map_response.json() assert ability_map["repository"]["name"] == "MailRouter" assert ability_map["abilities"][0]["capabilities"][0]["name"] == ( "Classify Incoming Email" ) search_response = client.get("/search", params={"q": "email"}) assert search_response.status_code == 200 assert search_response.json() finally: app.dependency_overrides.clear()