Skip to content

Commit 1d0f15d

Browse files
update tests
1 parent 1669754 commit 1d0f15d

File tree

1 file changed

+37
-24
lines changed

1 file changed

+37
-24
lines changed

src/python-fastui/tests/test_forms.py

+37-24
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ def __init__(self, form_data_list: List[Tuple[str, Union[str, UploadFile]]]):
2727
@asynccontextmanager
2828
async def form(self):
2929
yield self._form_data
30+
for value in self._form_data.values():
31+
if isinstance(value, UploadFile):
32+
value.file.close()
3033

3134

3235
def test_simple_form_fields():
@@ -94,9 +97,9 @@ async def test_simple_form_submit():
9497

9598
request = FakeRequest([('name', 'bar'), ('size', '123')])
9699

97-
m = await form_dep.dependency(request)
98-
assert isinstance(m, SimpleForm)
99-
assert m.model_dump() == {'name': 'bar', 'size': 123}
100+
async with form_dep.dependency(request) as m:
101+
assert isinstance(m, SimpleForm)
102+
assert m.model_dump() == {'name': 'bar', 'size': 123}
100103

101104

102105
async def test_simple_form_submit_repeat():
@@ -105,7 +108,8 @@ async def test_simple_form_submit_repeat():
105108
request = FakeRequest([('name', 'bar'), ('size', '123'), ('size', '456')])
106109

107110
with pytest.raises(HTTPException) as exc_info:
108-
await form_dep.dependency(request)
111+
async with form_dep.dependency(request):
112+
pass
109113

110114
# insert_assert(exc_info.value.detail)
111115
assert exc_info.value.detail == {
@@ -156,9 +160,9 @@ async def test_w_nested_form_submit():
156160

157161
request = FakeRequest([('name', 'bar'), ('nested.x', '123')])
158162

159-
m = await form_dep.dependency(request)
160-
assert isinstance(m, FormWithNested)
161-
assert m.model_dump() == {'name': 'bar', 'nested': {'x': 123}}
163+
async with form_dep.dependency(request) as m:
164+
assert isinstance(m, FormWithNested)
165+
assert m.model_dump() == {'name': 'bar', 'nested': {'x': 123}}
162166

163167

164168
class FormWithFile(BaseModel):
@@ -190,8 +194,9 @@ async def test_file_submit():
190194
file = UploadFile(BytesIO(b'foobar'), size=6, filename='testing.txt')
191195
request = FakeRequest([('profile_pic', file)])
192196

193-
m = await fastui_form(FormWithFile).dependency(request)
194-
assert m.model_dump() == {'profile_pic': file}
197+
async with fastui_form(FormWithFile).dependency(request) as m:
198+
assert m.model_dump() == {'profile_pic': file}
199+
assert not m.profile_pic.file.closed
195200

196201

197202
async def test_file_submit_repeat():
@@ -200,7 +205,8 @@ async def test_file_submit_repeat():
200205
request = FakeRequest([('profile_pic', file1), ('profile_pic', file2)])
201206

202207
with pytest.raises(HTTPException) as exc_info:
203-
await fastui_form(FormWithFile).dependency(request)
208+
async with fastui_form(FormWithFile).dependency(request):
209+
pass
204210

205211
# insert_assert(exc_info.value.detail)
206212
assert exc_info.value.detail == {
@@ -239,16 +245,18 @@ async def test_file_constrained_submit():
239245
file = UploadFile(BytesIO(b'foobar'), size=16_000, headers=headers)
240246
request = FakeRequest([('profile_pic', file)])
241247

242-
m = await fastui_form(FormWithFileConstraint).dependency(request)
243-
assert m.model_dump() == {'profile_pic': file}
248+
async with fastui_form(FormWithFileConstraint).dependency(request) as m:
249+
assert m.model_dump() == {'profile_pic': file}
250+
assert not m.profile_pic.file.closed
244251

245252

246253
async def test_file_constrained_submit_filename():
247254
file = UploadFile(BytesIO(b'foobar'), size=16_000, filename='image.png')
248255
request = FakeRequest([('profile_pic', file)])
249256

250-
m = await fastui_form(FormWithFileConstraint).dependency(request)
251-
assert m.model_dump() == {'profile_pic': file}
257+
async with fastui_form(FormWithFileConstraint).dependency(request) as m:
258+
assert m.model_dump() == {'profile_pic': file}
259+
assert not m.profile_pic.file.closed
252260

253261

254262
async def test_file_constrained_submit_too_big():
@@ -257,7 +265,8 @@ async def test_file_constrained_submit_too_big():
257265
request = FakeRequest([('profile_pic', file)])
258266

259267
with pytest.raises(HTTPException) as exc_info:
260-
await fastui_form(FormWithFileConstraint).dependency(request)
268+
async with fastui_form(FormWithFileConstraint).dependency(request):
269+
pass
261270

262271
# insert_assert(exc_info.value.detail)
263272
assert exc_info.value.detail == {
@@ -277,7 +286,8 @@ async def test_file_constrained_submit_wrong_type():
277286
request = FakeRequest([('profile_pic', file)])
278287

279288
with pytest.raises(HTTPException) as exc_info:
280-
await fastui_form(FormWithFileConstraint).dependency(request)
289+
async with fastui_form(FormWithFileConstraint).dependency(request):
290+
pass
281291

282292
# insert_assert(exc_info.value.detail)
283293
assert exc_info.value.detail == {
@@ -323,17 +333,20 @@ async def test_multiple_files_single():
323333
file = UploadFile(BytesIO(b'foobar'), size=16_000, filename='image.png')
324334
request = FakeRequest([('files', file)])
325335

326-
m = await fastui_form(FormMultipleFiles).dependency(request)
327-
assert m.model_dump() == {'files': [file]}
336+
async with fastui_form(FormMultipleFiles).dependency(request) as m:
337+
assert m.model_dump() == {'files': [file]}
338+
assert not m.files[0].file.closed
328339

329340

330341
async def test_multiple_files_multiple():
331342
file1 = UploadFile(BytesIO(b'foobar'), size=6, filename='image1.png')
332343
file2 = UploadFile(BytesIO(b'foobar'), size=6, filename='image2.png')
333344
request = FakeRequest([('files', file1), ('files', file2)])
334345

335-
m = await fastui_form(FormMultipleFiles).dependency(request)
336-
assert m.model_dump() == {'files': [file1, file2]}
346+
async with fastui_form(FormMultipleFiles).dependency(request) as m:
347+
assert m.model_dump() == {'files': [file1, file2]}
348+
assert not m.files[0].file.closed
349+
assert not m.files[1].file.closed
337350

338351

339352
class FixedTuple(BaseModel):
@@ -379,8 +392,8 @@ def test_fixed_tuple():
379392
async def test_fixed_tuple_submit():
380393
request = FakeRequest([('foo.0', 'bar'), ('foo.1', '123'), ('foo.2', '456')])
381394

382-
m = await fastui_form(FixedTuple).dependency(request)
383-
assert m.model_dump() == {'foo': ('bar', 123, 456)}
395+
async with fastui_form(FixedTuple).dependency(request) as m:
396+
assert m.model_dump() == {'foo': ('bar', 123, 456)}
384397

385398

386399
class NestedTuple(BaseModel):
@@ -426,8 +439,8 @@ def test_fixed_tuple_nested():
426439
async def test_fixed_tuple_nested_submit():
427440
request = FakeRequest([('bar.foo.0', 'bar'), ('bar.foo.1', '123'), ('bar.foo.2', '456')])
428441

429-
m = await fastui_form(NestedTuple).dependency(request)
430-
assert m.model_dump() == {'bar': {'foo': ('bar', 123, 456)}}
442+
async with fastui_form(NestedTuple).dependency(request) as m:
443+
assert m.model_dump() == {'bar': {'foo': ('bar', 123, 456)}}
431444

432445

433446
def test_variable_tuple():

0 commit comments

Comments
 (0)