Coverage for tests / test_query.py: 100%
118 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +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") 1efgh
10 assert response.status_code == 422 1efgh
11 assert response.json() == { 1efgh
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") 1ijkl
25 assert response.status_code == 200 1ijkl
26 assert response.json() == "foo bar baz" 1ijkl
29def test_query_not_declared_baz(): 1abcd
30 response = client.get("/query?not_declared=baz") 1mnop
31 assert response.status_code == 422 1mnop
32 assert response.json() == { 1mnop
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") 1qrst
46 assert response.status_code == 200 1qrst
47 assert response.json() == "foo bar" 1qrst
50def test_query_optional_query_baz(): 1abcd
51 response = client.get("/query/optional?query=baz") 1uvwx
52 assert response.status_code == 200 1uvwx
53 assert response.json() == "foo bar baz" 1uvwx
56def test_query_optional_not_declared_baz(): 1abcd
57 response = client.get("/query/optional?not_declared=baz") 1yzAB
58 assert response.status_code == 200 1yzAB
59 assert response.json() == "foo bar" 1yzAB
62def test_query_int(): 1abcd
63 response = client.get("/query/int") 1CDEF
64 assert response.status_code == 422 1CDEF
65 assert response.json() == { 1CDEF
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") 1GHIJ
79 assert response.status_code == 200 1GHIJ
80 assert response.json() == "foo bar 42" 1GHIJ
83def test_query_int_query_42_5(): 1abcd
84 response = client.get("/query/int?query=42.5") 1KLMN
85 assert response.status_code == 422 1KLMN
86 assert response.json() == { 1KLMN
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") 1OPQR
100 assert response.status_code == 422 1OPQR
101 assert response.json() == { 1OPQR
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") 1STUV
115 assert response.status_code == 422 1STUV
116 assert response.json() == { 1STUV
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") 1WXYZ
130 assert response.status_code == 200 1WXYZ
131 assert response.json() == "foo bar" 1WXYZ
134def test_query_int_optional_query_50(): 1abcd
135 response = client.get("/query/int/optional?query=50") 10123
136 assert response.status_code == 200 10123
137 assert response.json() == "foo bar 50" 10123
140def test_query_int_optional_query_foo(): 1abcd
141 response = client.get("/query/int/optional?query=foo") 14567
142 assert response.status_code == 422 14567
143 assert response.json() == { 14567
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") 189!#
157 assert response.status_code == 200 189!#
158 assert response.json() == "foo bar 10" 189!#
161def test_query_int_default_query_50(): 1abcd
162 response = client.get("/query/int/default?query=50") 1$%'(
163 assert response.status_code == 200 1$%'(
164 assert response.json() == "foo bar 50" 1$%'(
167def test_query_int_default_query_foo(): 1abcd
168 response = client.get("/query/int/default?query=foo") 1)*+,
169 assert response.status_code == 422 1)*+,
170 assert response.json() == { 1)*+,
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") 1-./:
184 assert response.status_code == 200 1-./:
185 assert response.json() == "foo bar" 1-./:
188def test_query_param_query_50(): 1abcd
189 response = client.get("/query/param?query=50") 1;=?@
190 assert response.status_code == 200 1;=?@
191 assert response.json() == "foo bar 50" 1;=?@
194def test_query_param_required(): 1abcd
195 response = client.get("/query/param-required") 1[]^_
196 assert response.status_code == 422 1[]^_
197 assert response.json() == { 1[]^_
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") 2~ abbbcb
217 assert response.status_code == 422 2~ abbbcb
218 assert response.json() == { 2~ abbbcb
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") 2dbebfbgb
232 assert response.status_code == 200 2dbebfbgb
233 assert response.json() == "foo bar 50" 2dbebfbgb
236def test_query_param_required_int_query_foo(): 1abcd
237 response = client.get("/query/param-required/int?query=foo") 2hbibjbkb
238 assert response.status_code == 422 2hbibjbkb
239 assert response.json() == { 2hbibjbkb
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") 2lbmbnbob
253 assert response.status_code == 200 2lbmbnbob
254 assert response.json() == "1,2" 2lbmbnbob
257def test_query_list(): 1abcd
258 response = client.get("/query/list/?device_ids=1&device_ids=2") 2pbqbrbsb
259 assert response.status_code == 200 2pbqbrbsb
260 assert response.json() == [1, 2] 2pbqbrbsb
263def test_query_list_empty(): 1abcd
264 response = client.get("/query/list/") 2BbCbDbEb
265 assert response.status_code == 422 2BbCbDbEb
268def test_query_list_default(): 1abcd
269 response = client.get("/query/list-default/?device_ids=1&device_ids=2") 2tbubvbwb
270 assert response.status_code == 200 2tbubvbwb
271 assert response.json() == [1, 2] 2tbubvbwb
274def test_query_list_default_empty(): 1abcd
275 response = client.get("/query/list-default/") 2xbybzbAb
276 assert response.status_code == 200 2xbybzbAb
277 assert response.json() == [] 2xbybzbAb