77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
from main import app
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
return TestClient(app)
|
|
|
|
|
|
class TestStationsEndpoint:
|
|
def test_get_stations_returns_list(self, client):
|
|
response = client.get("/api/stations")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "stations" in data
|
|
assert isinstance(data["stations"], list)
|
|
|
|
def test_get_stations_returns_station_objects(self, client):
|
|
response = client.get("/api/stations")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
if len(data["stations"]) > 0:
|
|
station = data["stations"][0]
|
|
assert "id" in station
|
|
assert "name" in station
|
|
|
|
def test_get_stations_search_filters_by_name(self, client):
|
|
response = client.get("/api/stations", params={"search": "Times"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
for station in data["stations"]:
|
|
assert "times" in station["name"].lower() or "Times" in station["id"]
|
|
|
|
def test_get_stations_search_filters_by_id(self, client):
|
|
response = client.get("/api/stations", params={"search": "127"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert len(data["stations"]) > 0
|
|
found = any(s["id"] == "127" for s in data["stations"])
|
|
assert found
|
|
|
|
|
|
class TestLinesEndpoint:
|
|
def test_get_lines_returns_list(self, client):
|
|
response = client.get("/api/lines")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "lines" in data
|
|
assert isinstance(data["lines"], list)
|
|
|
|
def test_get_lines_contains_expected_lines(self, client):
|
|
response = client.get("/api/lines")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
lines = data["lines"]
|
|
# Check for some known lines
|
|
assert "A" in lines
|
|
assert "C" in lines
|
|
assert "E" in lines
|
|
assert "1" in lines
|
|
assert "L" in lines
|
|
|
|
def test_get_lines_are_sorted(self, client):
|
|
response = client.get("/api/lines")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
lines = data["lines"]
|
|
assert lines == sorted(lines)
|
|
|
|
|
|
class TestConfigEndpoint:
|
|
def test_get_config_returns_response(self, client):
|
|
response = client.get("/api/config")
|
|
assert response.status_code == 200
|