forked from advanced-computing/Haixin-and-Chengpu-API
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_api.py
More file actions
105 lines (68 loc) · 3.02 KB
/
test_api.py
File metadata and controls
105 lines (68 loc) · 3.02 KB
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
99
100
101
102
103
104
105
"""
Unit tests for NYC Film Permits Flask API
"""
import os
import sys
import pytest
sys.path.insert(0, os.path.dirname(__file__))
# Point app.py to the real data.csv
os.chdir(os.path.dirname(__file__))
from app import app
@pytest.fixture
def client():
app.config["TESTING"] = True
with app.test_client() as client:
yield client
# ── GET /permits ──────────────────────────────────────────────────────────────
def test_list_permits_returns_200(client):
response = client.get("/permits")
assert response.status_code == 200
def test_list_permits_returns_json_by_default(client):
response = client.get("/permits")
assert response.content_type == "application/json"
def test_list_permits_limit(client):
response = client.get("/permits?limit=5")
data = response.get_json()
assert len(data) == 5
def test_list_permits_offset(client):
response_0 = client.get("/permits?limit=1&offset=0")
response_1 = client.get("/permits?limit=1&offset=1")
first = response_0.get_json()[0]["EventID"]
second = response_1.get_json()[0]["EventID"]
assert first != second
def test_list_permits_csv_format(client):
response = client.get("/permits?limit=5&format=csv")
assert "text/csv" in response.content_type
assert b"EventID" in response.data
def test_list_permits_invalid_filter_returns_empty(client):
response = client.get("/permits?Borough=NARNIA")
data = response.get_json()
assert data == []
# ── GET /permits/<event_id> ───────────────────────────────────────────────────
def test_get_permit_valid_id(client):
# Get a real EventID first
first = client.get("/permits?limit=1").get_json()[0]
event_id = first["EventID"]
response = client.get(f"/permits/{event_id}")
assert response.status_code == 200
def test_get_permit_returns_correct_record(client):
first = client.get("/permits?limit=1").get_json()[0]
event_id = first["EventID"]
response = client.get(f"/permits/{event_id}")
data = response.get_json()
assert data[0]["EventID"] == event_id
def test_get_permit_not_found_returns_404(client):
response = client.get("/permits/0000001")
assert response.status_code == 404
# ── GET /columns ──────────────────────────────────────────────────────────────
def test_columns_returns_200(client):
response = client.get("/columns")
assert response.status_code == 200
def test_columns_includes_event_id(client):
response = client.get("/columns")
data = response.get_json()
assert "EventID" in data["columns"]
def test_columns_includes_borough(client):
response = client.get("/columns")
data = response.get_json()
assert "Borough" in data["columns"]