Nyxar / tests /unit /test_batch.py
Sanjeev2501's picture
chore: remove torch
e87aac9
Raw
History Blame Contribute Delete
3.07 kB
from unittest.mock import patch, MagicMock
import io
HEADERS = {"x-api-key": "test-key"}
# ─── /batch/upload ───────────────────────────────────────────
@patch("app.routes.batch_routes.process_batch_job")
def test_batch_upload_success(mock_process, client, mock_db):
csv_content = b"text\nI love this product\nThis is terrible"
file = io.BytesIO(csv_content)
response = client.post(
"/batch/upload",
data={"model":"RoBERTa Transformer"},
files={"file": ("test.csv", file, "text/csv")},
headers=HEADERS
)
assert response.status_code == 200
data = response.json()
assert "job_id" in data
assert data["status"] == "pending"
assert data["total_rows"] == 2
def test_batch_upload_non_csv(client):
file = io.BytesIO(b"some content")
response = client.post(
"/batch/upload",
data={"model":"RoBERTa Transformer"},
files={"file": ("test.txt", file, "text/plain")},
headers=HEADERS
)
assert response.status_code == 400
def test_batch_upload_missing_text_column(client):
csv_content = b"review\nI love this\nTerrible"
file = io.BytesIO(csv_content)
response = client.post(
"/batch/upload",
data={"model":"RoBERTa Transformer"},
files={"file": ("test.csv", file, "text/csv")},
headers=HEADERS
)
assert response.status_code == 400
# ─── /batch/job/{job_id} ─────────────────────────────────────
def test_get_batch_job_not_found(client, mock_db):
mock_db.query.return_value.filter.return_value.first.return_value = None
response = client.get("/batch/job/999", headers=HEADERS)
assert response.status_code == 404
def test_get_batch_job_success(client, mock_db):
mock_job = MagicMock()
mock_job.id = 1
mock_job.filename = "test.csv"
mock_job.status = "completed"
mock_job.model_name = "roberta"
mock_job.total_rows = 2
mock_job.processed_rows = 2
mock_job.progress = 100.0
mock_job.all_columns = 1
mock_job.text_column = "text"
mock_job.inference_time = 0.1
mock_job.ml_processing_time = 0.1
mock_job.db_time = 0.05
mock_job.overhead_time = 0.01
mock_job.upload_time = 0.02
mock_job.file_validation_time = 0.01
mock_job.text_preprocessing_time = 0.01
mock_job.vectorization_time = 0.01
mock_job.tokenization_time = 0.01
mock_job.sequence_padding_time = 0.01
mock_job.throughput = 20.0
mock_job.processing_time = 0.5
mock_job.created_at = None
mock_job.completed_at = None
mock_job.error_message = None
mock_job.ai_insights = "Test insight"
mock_db.query.return_value.filter.return_value.first.return_value = mock_job
response = client.get("/batch/job/1", headers=HEADERS)
assert response.status_code == 200
data = response.json()
assert data["job_id"] == 1
assert data["status"] == "completed"