This repository was archived by the owner on Sep 14, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathtest_api.py
More file actions
109 lines (87 loc) · 3.14 KB
/
test_api.py
File metadata and controls
109 lines (87 loc) · 3.14 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
106
107
108
109
from operator import itemgetter
def test_get_collection(client):
response = client.get('/people')
assert response.status_code == 200
assert response.json['pagination'] == {
'count': 3,
'page': 1,
'pages': 1,
'per_page': 20
}
sorted_resources = sorted(response.json['resources'], key=itemgetter('id'))
assert sorted_resources == [
{'id': 1, 'name': 'Tom', 'dob': '1980-02-26', 'number_of_pets': 0},
{'id': 2, 'name': 'Dick', 'dob': '1982-03-14', 'number_of_pets': 3},
{'id': 3, 'name': 'Harry', 'dob': '1972-11-24', 'number_of_pets': 2},
]
def test_sorting(client):
response = client.get('/people?sort=number_of_pets')
assert response.json['resources'] == [
{'id': 1, 'name': 'Tom', 'dob': '1980-02-26', 'number_of_pets': 0},
{'id': 3, 'name': 'Harry', 'dob': '1972-11-24', 'number_of_pets': 2},
{'id': 2, 'name': 'Dick', 'dob': '1982-03-14', 'number_of_pets': 3},
]
response = client.get('/people?sort=-number_of_pets')
assert response.json['resources'] == [
{'id': 2, 'name': 'Dick', 'dob': '1982-03-14', 'number_of_pets': 3},
{'id': 3, 'name': 'Harry', 'dob': '1972-11-24', 'number_of_pets': 2},
{'id': 1, 'name': 'Tom', 'dob': '1980-02-26', 'number_of_pets': 0},
]
def test_filtering(client):
response = client.get('/people?name=Dick')
assert response.status_code == 200
assert response.json['pagination'] == {
'count': 1,
'page': 1,
'pages': 1,
'per_page': 20
}
assert response.json['resources'][0] == {
'id': 2, 'name': 'Dick', 'dob': '1982-03-14', 'number_of_pets': 3
}
def test_filtering_empty_results(client):
response = client.get('/people?name=Frank')
assert response.status_code == 200
assert response.json['pagination'] == {
'count': 0,
'page': 1,
'pages': 0,
'per_page': 20
}
assert response.json['resources'] == []
def test_get_individual(client):
response = client.get('/people/1')
assert response.status_code == 200
assert 'pagination' not in response.json
assert response.json == {
'id': 1, 'name': 'Tom', 'dob': '1980-02-26', 'number_of_pets': 0
}
def test_get_individual_404(client):
response = client.get('/people/99')
assert response.status_code == 404
def test_put_not_allowed(client):
response = client.put('/people/1')
assert response.status_code == 405
def test_delete_not_allowed(client):
response = client.delete('/people/1')
assert response.status_code == 405
def test_post_not_allowed(client):
response = client.post('/people')
assert response.status_code == 405
def test_pagination(client):
response = client.get('/people?per_page=2')
assert response.status_code == 200
assert response.json['pagination'] == {
'count': 3,
'page': 1,
'pages': 2,
'per_page': 2
}
response = client.get('/people?page=2&per_page=2')
assert response.status_code == 200
assert response.json['pagination'] == {
'count': 3,
'page': 2,
'pages': 2,
'per_page': 2
}