Skip to content

Commit af83403

Browse files
author
Cyrus Radfar
committed
Updated tests for new data structure return
1 parent 922e88f commit af83403

1 file changed

Lines changed: 37 additions & 32 deletions

File tree

python_anvil/tests/test_models.py

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from pydantic import BaseModel
44
from python_anvil.models import FileCompatibleBaseModel
55
from typing import Any, Optional, List
6+
import base64
67

78
def test_file_compat_base_model_handles_regular_data():
89
class TestModel(FileCompatibleBaseModel):
@@ -22,18 +23,17 @@ class FileModel(FileCompatibleBaseModel):
2223
model = FileModel(file=test_file)
2324
data = model.model_dump()
2425

25-
# First verify we got a BufferedReader back, not a SerializationIterator
26-
assert isinstance(data['file'], BufferedReader), \
27-
f"Expected BufferedReader but got {type(data['file'])}"
26+
# Verify we got a dictionary with the expected structure
27+
assert isinstance(data['file'], dict)
28+
assert 'data' in data['file']
29+
assert 'mimetype' in data['file']
30+
assert 'filename' in data['file']
2831

29-
# Verify the file is still readable
30-
data['file'].seek(0)
31-
content = data['file'].read()
32-
assert len(content) > 0, "File should be readable"
33-
34-
# verify the content is the same as the original file
32+
# Verify the content matches
3533
with open(__file__, 'rb') as original_file:
36-
assert content == original_file.read(), "File content should match original"
34+
original_content = original_file.read()
35+
decoded_content = base64.b64decode(data['file']['data'].encode('utf-8'))
36+
assert decoded_content == original_content, "File content should match original"
3737

3838
def test_file_compat_base_model_validates_types():
3939
class TestModel(FileCompatibleBaseModel):
@@ -106,14 +106,17 @@ def test_document_upload_handles_file_objects():
106106

107107
data = doc.model_dump()
108108

109-
# Verify file object is preserved
110-
assert isinstance(data['file'], BufferedReader), \
111-
f"Expected BufferedReader but got {type(data['file'])}"
109+
# Verify file is converted to expected dictionary format
110+
assert isinstance(data['file'], dict)
111+
assert 'data' in data['file']
112+
assert 'mimetype' in data['file']
113+
assert 'filename' in data['file']
112114

113-
# Verify file is still readable
114-
data['file'].seek(0)
115-
content = data['file'].read()
116-
assert len(content) > 0, "File should be readable"
115+
# Verify content matches
116+
with open(__file__, 'rb') as original_file:
117+
original_content = original_file.read()
118+
decoded_content = base64.b64decode(data['file']['data'].encode('utf-8'))
119+
assert decoded_content == original_content
117120

118121
# Verify other fields are correct
119122
assert data['id'] == "doc1"
@@ -174,17 +177,16 @@ def test_create_etch_packet_payload_handles_nested_file_objects():
174177
file_data = data['files'][0]
175178
assert file_data['id'] == "doc1"
176179
assert file_data['title'] == "Test Document"
177-
assert isinstance(file_data['file'], BufferedReader), \
178-
f"Expected BufferedReader but got {type(file_data['file'])}"
179-
180-
# Verify file is still readable
181-
file_data['file'].seek(0)
182-
content = file_data['file'].read()
183-
assert len(content) > 0, "File should be readable"
180+
assert isinstance(file_data['file'], dict)
181+
assert 'data' in file_data['file']
182+
assert 'mimetype' in file_data['file']
183+
assert 'filename' in file_data['file']
184184

185-
# Verify the content matches the original file
185+
# Verify content matches
186186
with open(__file__, 'rb') as original_file:
187-
assert content == original_file.read(), "File content should match original"
187+
original_content = original_file.read()
188+
decoded_content = base64.b64decode(file_data['file']['data'].encode('utf-8'))
189+
assert decoded_content == original_content
188190

189191
def test_create_etch_packet_payload_handles_multiple_files():
190192
from python_anvil.api_resources.payload import (
@@ -250,10 +252,13 @@ def test_create_etch_packet_payload_handles_multiple_files():
250252
for i, file_data in enumerate(data['files'], 1):
251253
assert file_data['id'] == f"doc{i}"
252254
assert file_data['title'] == f"Test Document {i}"
253-
assert isinstance(file_data['file'], BufferedReader), \
254-
f"File {i}: Expected BufferedReader but got {type(file_data['file'])}"
255+
assert isinstance(file_data['file'], dict)
256+
assert 'data' in file_data['file']
257+
assert 'mimetype' in file_data['file']
258+
assert 'filename' in file_data['file']
255259

256-
# Verify file is readable
257-
file_data['file'].seek(0)
258-
content = file_data['file'].read()
259-
assert len(content) > 0, f"File {i} should be readable"
260+
# Verify content matches
261+
with open(__file__, 'rb') as original_file:
262+
original_content = original_file.read()
263+
decoded_content = base64.b64decode(file_data['file']['data'].encode('utf-8'))
264+
assert decoded_content == original_content

0 commit comments

Comments
 (0)