File size: 3,690 Bytes
594db4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
93
94
95
96
97
98
"""Tests for the FastAPI endpoints."""


# ── GET /health ──────────────────────────────────────────────────────────────

def test_health_returns_ok(client):
    resp = client.get("/health")
    assert resp.status_code == 200
    data = resp.json()
    assert data["status"] == "ok"
    assert isinstance(data["available_models"], list)
    assert len(data["available_models"]) >= 1


def test_health_lists_distilbert(client):
    resp = client.get("/health")
    models = resp.json()["available_models"]
    assert "distilbert" in models


# ── POST /fix-newlines ───────────────────────────────────────────────────────

def test_fix_newlines_returns_fixed_text(client):
    resp = client.post("/fix-newlines", json={"text": "Hello world. This is a test."})
    assert resp.status_code == 200
    data = resp.json()
    assert "fixed_text" in data
    assert "model_used" in data
    assert isinstance(data["fixed_text"], str)


def test_fix_newlines_returns_model_name(client):
    resp = client.post("/fix-newlines", json={"text": "Hello world."})
    assert resp.json()["model_used"] == "bert"


def test_fix_newlines_empty_text(client):
    resp = client.post("/fix-newlines", json={"text": ""})
    assert resp.status_code == 200
    assert resp.json()["fixed_text"] == ""


def test_fix_newlines_missing_text_returns_422(client):
    resp = client.post("/fix-newlines", json={})
    assert resp.status_code == 422


def test_fix_newlines_multiline_input(client):
    text = "First sentence.\nSecond sentence.\n\nNew paragraph."
    resp = client.post("/fix-newlines", json={"text": text})
    assert resp.status_code == 200
    assert len(resp.json()["fixed_text"]) > 0


def test_fix_newlines_preserves_content(client):
    text = "The quick brown fox jumps over the lazy dog. It was a sunny day."
    resp = client.post("/fix-newlines", json={"text": text})
    fixed = resp.json()["fixed_text"]
    # all original words should be present
    for word in ["quick", "brown", "fox", "sunny", "day"]:
        assert word in fixed


# ── POST /fix-newlines-all-models ────────────────────────────────────────────

def test_fix_newlines_all_models(client):
    resp = client.post("/fix-newlines-all-models", json={"text": "Hello world. This is a test."})
    assert resp.status_code == 200
    data = resp.json()
    assert "results" in data
    assert len(data["results"]) >= 1


def test_fix_newlines_all_models_has_model_names(client):
    resp = client.post("/fix-newlines-all-models", json={"text": "Hello world."})
    names = [r["model_name"] for r in resp.json()["results"]]
    assert "distilbert" in names


def test_fix_newlines_all_models_has_fixed_text(client):
    resp = client.post("/fix-newlines-all-models", json={"text": "Hello world. Testing."})
    for result in resp.json()["results"]:
        assert "fixed_text" in result
        assert isinstance(result["fixed_text"], str)
        assert len(result["fixed_text"]) > 0


def test_fix_newlines_all_models_empty_text(client):
    resp = client.post("/fix-newlines-all-models", json={"text": ""})
    assert resp.status_code == 200
    for result in resp.json()["results"]:
        assert result["fixed_text"] == ""


def test_fix_newlines_all_models_missing_text_returns_422(client):
    resp = client.post("/fix-newlines-all-models", json={})
    assert resp.status_code == 422