Spaces:
Sleeping
Sleeping
File size: 3,187 Bytes
50231a8 2571402 50231a8 2571402 50231a8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | from io import BytesIO
from fastapi.testclient import TestClient
from app.main import app
from app.pipelines.classification_pipeline import classification_pipeline
client = TestClient(app)
def test_classifier_endpoint_contract(monkeypatch):
monkeypatch.setattr(classification_pipeline, "classify_text", lambda text: "news")
response = client.post("/api/classifier", json={"text": "This is a long enough sentence for classification."})
assert response.status_code == 200
assert response.json() == "news"
def test_language_endpoint_contract(monkeypatch):
monkeypatch.setattr(classification_pipeline, "detect_language", lambda text: "en")
response = client.post("/api/language", json={"text": "This is a language detection sample text."})
assert response.status_code == 200
assert response.json() == "en"
def test_labels_config_roundtrip():
response = client.post("/configlabel", json={"labels": ["tech", "health", "legal"]})
assert response.status_code == 200
assert response.json() == ["tech", "health", "legal"]
get_response = client.get("/labels")
assert get_response.status_code == 200
assert get_response.json() == ["tech", "health", "legal"]
def test_labels_config_accepts_labels_list_payload():
response = client.post("/configlabel", json={"labels": ["tech", "health", "legal"]})
assert response.status_code == 200
assert response.json() == ["tech", "health", "legal"]
def test_labels_config_rejects_empty_labels():
response = client.post("/configlabel", json={"labels": [" ", ""]})
assert response.status_code == 400
assert response.json() == {"detail": "At least one label is required"}
def test_labels_config_rejects_missing_labels():
response = client.post("/configlabel", json={})
assert response.status_code == 422
assert "labels" in response.text
def test_labels_config_rejects_text_field():
response = client.post("/configlabel", json={"text": "tech,health"})
assert response.status_code == 422
assert "extra_forbidden" in response.text
def test_labels_config_rejects_texts_field():
response = client.post("/configlabel", json={"texts": ["tech,health"]})
assert response.status_code == 422
assert "extra_forbidden" in response.text
def test_transform_file_contract(monkeypatch):
monkeypatch.setattr(classification_pipeline, "transform_file", lambda filename, path: "extracted content")
files = {"file": ("sample.txt", BytesIO(b"hello"), "text/plain")}
response = client.post("/api/transformer", files=files)
assert response.status_code == 200
assert response.json()["filename"] == "sample.txt"
assert response.json()["content"] == "extracted content"
def test_classify_file_contract(monkeypatch):
monkeypatch.setattr(
classification_pipeline,
"classify_file",
lambda filename, path: {"label": "finance", "language": "en"},
)
files = {"file": ("sample.txt", BytesIO(b"hello"), "text/plain")}
response = client.post("/classify", files=files)
assert response.status_code == 200
assert response.json() == {"label": "finance", "language": "en", "type": None}
|