Coverage for tests / test_query.py: 100%
118 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-12 18:15 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-12 18:15 +0000
1from fastapi.testclient import TestClient 1abcd
3from .main import app 1abcd
5client = TestClient(app) 1abcd
8def test_query(): 1abcd
9 response = client.get("/query") 1efg
10 assert response.status_code == 422 1efg
11 assert response.json() == { 1efg
12 "detail": [
13 {
14 "type": "missing",
15 "loc": ["query", "query"],
16 "msg": "Field required",
17 "input": None,
18 }
19 ]
20 }
23def test_query_query_baz(): 1abcd
24 response = client.get("/query?query=baz") 1hij
25 assert response.status_code == 200 1hij
26 assert response.json() == "foo bar baz" 1hij
29def test_query_not_declared_baz(): 1abcd
30 response = client.get("/query?not_declared=baz") 1klm
31 assert response.status_code == 422 1klm
32 assert response.json() == { 1klm
33 "detail": [
34 {
35 "type": "missing",
36 "loc": ["query", "query"],
37 "msg": "Field required",
38 "input": None,
39 }
40 ]
41 }
44def test_query_optional(): 1abcd
45 response = client.get("/query/optional") 1nop
46 assert response.status_code == 200 1nop
47 assert response.json() == "foo bar" 1nop
50def test_query_optional_query_baz(): 1abcd
51 response = client.get("/query/optional?query=baz") 1qrs
52 assert response.status_code == 200 1qrs
53 assert response.json() == "foo bar baz" 1qrs
56def test_query_optional_not_declared_baz(): 1abcd
57 response = client.get("/query/optional?not_declared=baz") 1tuv
58 assert response.status_code == 200 1tuv
59 assert response.json() == "foo bar" 1tuv
62def test_query_int(): 1abcd
63 response = client.get("/query/int") 1wxy
64 assert response.status_code == 422 1wxy
65 assert response.json() == { 1wxy
66 "detail": [
67 {
68 "type": "missing",
69 "loc": ["query", "query"],
70 "msg": "Field required",
71 "input": None,
72 }
73 ]
74 }
77def test_query_int_query_42(): 1abcd
78 response = client.get("/query/int?query=42") 1zAB
79 assert response.status_code == 200 1zAB
80 assert response.json() == "foo bar 42" 1zAB
83def test_query_int_query_42_5(): 1abcd
84 response = client.get("/query/int?query=42.5") 1CDE
85 assert response.status_code == 422 1CDE
86 assert response.json() == { 1CDE
87 "detail": [
88 {
89 "type": "int_parsing",
90 "loc": ["query", "query"],
91 "msg": "Input should be a valid integer, unable to parse string as an integer",
92 "input": "42.5",
93 }
94 ]
95 }
98def test_query_int_query_baz(): 1abcd
99 response = client.get("/query/int?query=baz") 1FGH
100 assert response.status_code == 422 1FGH
101 assert response.json() == { 1FGH
102 "detail": [
103 {
104 "type": "int_parsing",
105 "loc": ["query", "query"],
106 "msg": "Input should be a valid integer, unable to parse string as an integer",
107 "input": "baz",
108 }
109 ]
110 }
113def test_query_int_not_declared_baz(): 1abcd
114 response = client.get("/query/int?not_declared=baz") 1IJK
115 assert response.status_code == 422 1IJK
116 assert response.json() == { 1IJK
117 "detail": [
118 {
119 "type": "missing",
120 "loc": ["query", "query"],
121 "msg": "Field required",
122 "input": None,
123 }
124 ]
125 }
128def test_query_int_optional(): 1abcd
129 response = client.get("/query/int/optional") 1LMN
130 assert response.status_code == 200 1LMN
131 assert response.json() == "foo bar" 1LMN
134def test_query_int_optional_query_50(): 1abcd
135 response = client.get("/query/int/optional?query=50") 1OPQ
136 assert response.status_code == 200 1OPQ
137 assert response.json() == "foo bar 50" 1OPQ
140def test_query_int_optional_query_foo(): 1abcd
141 response = client.get("/query/int/optional?query=foo") 1RST
142 assert response.status_code == 422 1RST
143 assert response.json() == { 1RST
144 "detail": [
145 {
146 "type": "int_parsing",
147 "loc": ["query", "query"],
148 "msg": "Input should be a valid integer, unable to parse string as an integer",
149 "input": "foo",
150 }
151 ]
152 }
155def test_query_int_default(): 1abcd
156 response = client.get("/query/int/default") 1UVW
157 assert response.status_code == 200 1UVW
158 assert response.json() == "foo bar 10" 1UVW
161def test_query_int_default_query_50(): 1abcd
162 response = client.get("/query/int/default?query=50") 1XYZ
163 assert response.status_code == 200 1XYZ
164 assert response.json() == "foo bar 50" 1XYZ
167def test_query_int_default_query_foo(): 1abcd
168 response = client.get("/query/int/default?query=foo") 1012
169 assert response.status_code == 422 1012
170 assert response.json() == { 1012
171 "detail": [
172 {
173 "type": "int_parsing",
174 "loc": ["query", "query"],
175 "msg": "Input should be a valid integer, unable to parse string as an integer",
176 "input": "foo",
177 }
178 ]
179 }
182def test_query_param(): 1abcd
183 response = client.get("/query/param") 1345
184 assert response.status_code == 200 1345
185 assert response.json() == "foo bar" 1345
188def test_query_param_query_50(): 1abcd
189 response = client.get("/query/param?query=50") 1678
190 assert response.status_code == 200 1678
191 assert response.json() == "foo bar 50" 1678
194def test_query_param_required(): 1abcd
195 response = client.get("/query/param-required") 19!#
196 assert response.status_code == 422 19!#
197 assert response.json() == { 19!#
198 "detail": [
199 {
200 "type": "missing",
201 "loc": ["query", "query"],
202 "msg": "Field required",
203 "input": None,
204 }
205 ]
206 }
209def test_query_param_required_query_50(): 1abcd
210 response = client.get("/query/param-required?query=50") 1$%'
211 assert response.status_code == 200 1$%'
212 assert response.json() == "foo bar 50" 1$%'
215def test_query_param_required_int(): 1abcd
216 response = client.get("/query/param-required/int") 1()*
217 assert response.status_code == 422 1()*
218 assert response.json() == { 1()*
219 "detail": [
220 {
221 "type": "missing",
222 "loc": ["query", "query"],
223 "msg": "Field required",
224 "input": None,
225 }
226 ]
227 }
230def test_query_param_required_int_query_50(): 1abcd
231 response = client.get("/query/param-required/int?query=50") 1+,-
232 assert response.status_code == 200 1+,-
233 assert response.json() == "foo bar 50" 1+,-
236def test_query_param_required_int_query_foo(): 1abcd
237 response = client.get("/query/param-required/int?query=foo") 1./:
238 assert response.status_code == 422 1./:
239 assert response.json() == { 1./:
240 "detail": [
241 {
242 "type": "int_parsing",
243 "loc": ["query", "query"],
244 "msg": "Input should be a valid integer, unable to parse string as an integer",
245 "input": "foo",
246 }
247 ]
248 }
251def test_query_frozenset_query_1_query_1_query_2(): 1abcd
252 response = client.get("/query/frozenset/?query=1&query=1&query=2") 1;=?
253 assert response.status_code == 200 1;=?
254 assert response.json() == "1,2" 1;=?
257def test_query_list(): 1abcd
258 response = client.get("/query/list/?device_ids=1&device_ids=2") 1@[]
259 assert response.status_code == 200 1@[]
260 assert response.json() == [1, 2] 1@[]
263def test_query_list_empty(): 1abcd
264 response = client.get("/query/list/") 2~ abbb
265 assert response.status_code == 422 2~ abbb
268def test_query_list_default(): 1abcd
269 response = client.get("/query/list-default/?device_ids=1&device_ids=2") 1^_`
270 assert response.status_code == 200 1^_`
271 assert response.json() == [1, 2] 1^_`
274def test_query_list_default_empty(): 1abcd
275 response = client.get("/query/list-default/") 1{|}
276 assert response.status_code == 200 1{|}
277 assert response.json() == [] 1{|}