Files
Project_Velocity/backend/tests/test_oracle_routes.py
sagnik 4645ff737b feat: Complete code integration of modules (#18)
The complete code integration is done.

Co-authored-by: Sagnik <sagnik7896@gmail.com>
Reviewed-on: #18
2026-04-12 19:20:14 +05:30

65 lines
2.3 KiB
Python

from __future__ import annotations
from fastapi import FastAPI
from fastapi.testclient import TestClient
from backend.api.routes_oracle import router
def _build_client() -> TestClient:
app = FastAPI()
app.state.db_pool = object()
async def _broadcast_crm_event(*_args, **_kwargs):
return None
app.state.broadcast_crm_event = _broadcast_crm_event
app.include_router(router, prefix="/api/oracle")
return TestClient(app)
def test_oracle_mcp_execute_and_writeback(monkeypatch) -> None:
client = _build_client()
async def fake_execute(tool_name, query, *, crm_pool=None):
return {"tool": tool_name, "query": query, "status": "ok", "results": [{"title": "Match"}]}
async def fake_apply_writeback(payload):
return {
"actionId": payload["action_id"],
"status": "applied",
"targetEntityType": payload["target_entity_type"],
"targetEntityId": payload["target_entity_id"],
"resultPayload": {"lead_id": payload["target_entity_id"], "score": 88},
}
async def fake_list_actions(*, status=None, limit=50):
return [{"actionId": "act-1", "status": status or "planned", "targetEntityType": "lead"}]
monkeypatch.setattr("backend.api.routes_oracle.mcp_registry.execute", fake_execute)
monkeypatch.setattr("backend.api.routes_oracle.oracle_action_service.apply_writeback", fake_apply_writeback)
monkeypatch.setattr("backend.api.routes_oracle.oracle_action_service.list_actions", fake_list_actions)
mcp_response = client.post(
"/api/oracle/mcp/execute",
json={"tool_name": "external_search", "query": "luxury marina inventory dubai"},
)
assert mcp_response.status_code == 200
assert mcp_response.json()["data"]["tool"] == "external_search"
writeback_response = client.post(
"/api/oracle/actions/writeback",
json={
"action_id": "act-1",
"target_entity_type": "lead",
"target_entity_id": "lead-1",
"writeback_payload": {"score_delta": 12},
},
)
assert writeback_response.status_code == 200
assert writeback_response.json()["data"]["status"] == "applied"
list_response = client.get("/api/oracle/actions")
assert list_response.status_code == 200
assert list_response.json()["meta"]["count"] == 1