mirror of
https://github.com/borbann-platform/backend-api.git
synced 2025-12-18 12:14:05 +01:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
import io
|
|
import pytest
|
|
from fastapi import UploadFile
|
|
from ingestion.adapters.file_adapter import FileAdapter
|
|
|
|
|
|
def make_upload_file(content: str, filename: str) -> UploadFile:
|
|
return UploadFile(
|
|
filename=filename,
|
|
file=io.BytesIO(content.encode("utf-8")),
|
|
)
|
|
|
|
|
|
async def test_file_adapter_csv():
|
|
csv_content = "id,name,price\n001,Apple,12\n002,Orange,10\n003,Banana,8"
|
|
upload = make_upload_file(csv_content, "test.csv")
|
|
adapter = FileAdapter(upload)
|
|
records = await adapter.fetch()
|
|
|
|
assert len(records) == 3
|
|
assert records[0].data["name"] == "Apple"
|
|
assert records[1].data["price"] == 10
|
|
assert records[2].data["id"] == 3
|
|
|
|
|
|
async def test_file_adapter_json():
|
|
json_content = """
|
|
[{"id": "001", "name": "Apple", "price": 12},
|
|
{"id": "002", "name": "Orange", "price": 10},
|
|
{"id": "003", "name": "Banana", "price": 8}]
|
|
"""
|
|
upload = make_upload_file(json_content, "test.json")
|
|
adapter = FileAdapter(upload)
|
|
records = await adapter.fetch()
|
|
|
|
assert len(records) == 3
|
|
assert records[0].data["name"] == "Apple"
|
|
assert records[1].data["price"] == 10
|
|
assert records[2].data["id"] == 3
|
|
|
|
|
|
async def test_file_adapter_missing_filename():
|
|
upload = UploadFile(
|
|
filename="",
|
|
file=io.BytesIO("id,name,price\n001,Apple,12".encode("utf-8")),
|
|
)
|
|
adapter = FileAdapter(upload)
|
|
|
|
with pytest.raises(ValueError) as excinfo:
|
|
await adapter.fetch()
|
|
|
|
assert "File name is required" in str(excinfo.value)
|