python_code_review_env / tests /test_multi_domain_platform.py
uvpatel7271's picture
Upload folder using huggingface_hub
c29f1fd verified
from __future__ import annotations
from fastapi.testclient import TestClient
from api.main import app
from schemas.request import AnalyzeCodeRequest
from services.analysis_service import AnalysisService
def test_analysis_service_detects_web_code() -> None:
service = AnalysisService()
request = AnalyzeCodeRequest(
code="from fastapi import FastAPI\napp = FastAPI()\n\n@app.get('/health')\ndef health():\n return {'status': 'ok'}\n",
domain_hint="auto",
)
result = service.analyze(request)
assert result.detected_domain == "web"
assert 0.0 <= result.score_breakdown.reward <= 1.0
assert len(result.improvement_plan) == 3
def test_analysis_service_detects_dsa_code() -> None:
service = AnalysisService()
request = AnalyzeCodeRequest(
code="def has_pair(nums, target):\n for i in range(len(nums)):\n for j in range(i + 1, len(nums)):\n if nums[i] + nums[j] == target:\n return True\n return False\n",
domain_hint="auto",
)
result = service.analyze(request)
assert result.detected_domain == "dsa"
assert result.static_analysis.time_complexity in {"O(n^2)", "O(n^3)"}
def test_api_analyze_endpoint_returns_valid_payload() -> None:
client = TestClient(app)
response = client.post(
"/analyze",
json={
"code": "import torch\n\ndef predict(model, x):\n return model(x)\n",
"context_window": "Inference helper for a classifier",
"traceback_text": "",
"domain_hint": "auto",
},
)
assert response.status_code == 200
payload = response.json()
assert "detected_domain" in payload
assert "score_breakdown" in payload