From 41033ad099333a2ed9fe703e541e21c0f3d7b394 Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:06:46 +0330 Subject: [PATCH] Import tests: tests/test_jobs_tavily_validate Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- tests/test_jobs_tavily_validate.py | 84 ++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 tests/test_jobs_tavily_validate.py diff --git a/tests/test_jobs_tavily_validate.py b/tests/test_jobs_tavily_validate.py new file mode 100644 index 0000000..2a24b58 --- /dev/null +++ b/tests/test_jobs_tavily_validate.py @@ -0,0 +1,84 @@ +from fastapi import FastAPI +from fastapi.testclient import TestClient + + +def test_citation_validation_route(): + from axon.routers.validate import router + + app = FastAPI() + app.include_router(router) + client = TestClient(app) + + resp = client.post( + "/validate/citations", + json={ + "report": "Claim [1] and missing [3]", + "sources": [ + {"title": "A", "url": "https://a.com", "content": "a"}, + {"title": "B", "url": "https://b.com", "content": "b"}, + ], + }, + ) + assert resp.status_code == 200 + assert resp.json()["missing_citations"] == [3] + assert resp.json()["valid"] is False + + +def test_tavily_search_adapter(monkeypatch): + from axon.models import SearchResponse + + async def fake_search(request): + assert request.domains_whitelist == ["example.com"] + return SearchResponse(query=request.query, results=[], response_time=0.1) + + monkeypatch.setattr("axon.routers.tavily.search", fake_search) + + from axon.routers.tavily import router + + app = FastAPI() + app.include_router(router) + client = TestClient(app) + + resp = client.post( + "/tavily/search", + json={"query": "axon", "include_domains": ["example.com"]}, + ) + assert resp.status_code == 200 + assert resp.json()["query"] == "axon" + + +def test_job_lifecycle(monkeypatch): + from axon.models import ResearchResponse + + async def fake_research(request): + return ResearchResponse( + query=request.query, + report="done", + sources=[], + sub_queries=[], + response_time=0.1, + ) + + monkeypatch.setattr("axon.routers.jobs.research", fake_research) + + from axon.routers.jobs import router + + app = FastAPI() + app.include_router(router) + client = TestClient(app) + + create = client.post("/research/jobs", json={"query": "axon"}) + assert create.status_code == 200 + job_id = create.json()["job_id"] + + import time + + for _ in range(20): + read = client.get(f"/jobs/{job_id}") + if read.json()["status"] == "succeeded": + break + time.sleep(0.01) + + assert read.status_code == 200 + assert read.json()["status"] == "succeeded" + assert read.json()["result"]["report"] == "done"