coming together
This commit is contained in:
103
tests/test_flexible_import.py
Normal file
103
tests/test_flexible_import.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import uuid
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.main import app
|
||||
from app.auth.security import get_current_user
|
||||
from app.database.base import SessionLocal
|
||||
from app.models.flexible import FlexibleImport
|
||||
|
||||
|
||||
def test_batch_import_unknown_csv_saves_flexible_rows():
|
||||
# Override auth to bypass JWT for this test
|
||||
app.dependency_overrides[get_current_user] = lambda: {
|
||||
"id": "test",
|
||||
"username": "tester",
|
||||
"is_admin": True,
|
||||
"is_active": True,
|
||||
}
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
unique_suffix = uuid.uuid4().hex[:8]
|
||||
filename = f"UNKNOWN_TEST_{unique_suffix}.csv"
|
||||
csv_content = "col1,col2\nA,B\nC,D\n"
|
||||
|
||||
try:
|
||||
resp = client.post(
|
||||
"/api/import/batch-upload",
|
||||
files=[("files", (filename, csv_content, "text/csv"))],
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
payload = resp.json()
|
||||
assert "batch_results" in payload
|
||||
result = next((r for r in payload["batch_results"] if r["file_type"] == filename), None)
|
||||
assert result is not None
|
||||
assert result["status"] == "success"
|
||||
assert result["imported_count"] == 2
|
||||
assert result["auto_mapping"]["flexible_saved_rows"] == 2
|
||||
|
||||
# Verify rows persisted
|
||||
db = SessionLocal()
|
||||
try:
|
||||
count = (
|
||||
db.query(FlexibleImport)
|
||||
.filter(FlexibleImport.file_type == filename)
|
||||
.count()
|
||||
)
|
||||
assert count == 2
|
||||
finally:
|
||||
# Clean up created rows to keep DB tidy
|
||||
db.query(FlexibleImport).filter(FlexibleImport.file_type == filename).delete()
|
||||
db.commit()
|
||||
db.close()
|
||||
finally:
|
||||
# Restore dependencies
|
||||
app.dependency_overrides.pop(get_current_user, None)
|
||||
|
||||
|
||||
def test_single_upload_flexible_creates_rows():
|
||||
# Override auth to bypass JWT for this test
|
||||
app.dependency_overrides[get_current_user] = lambda: {
|
||||
"id": "test",
|
||||
"username": "tester",
|
||||
"is_admin": True,
|
||||
"is_active": True,
|
||||
}
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
filename = "SINGLE_UNKNOWN.csv"
|
||||
csv_content = "a,b\n1,2\n3,4\n"
|
||||
|
||||
try:
|
||||
# Upload via flexible-only endpoint
|
||||
resp = client.post(
|
||||
"/api/import/upload-flexible",
|
||||
files={"file": (filename, csv_content, "text/csv")},
|
||||
data={"replace_existing": "false"},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
payload = resp.json()
|
||||
assert payload["file_type"] == filename
|
||||
assert payload["imported_count"] == 2
|
||||
assert payload["auto_mapping"]["flexible_saved_rows"] == 2
|
||||
|
||||
# Verify rows persisted
|
||||
db = SessionLocal()
|
||||
try:
|
||||
count = (
|
||||
db.query(FlexibleImport)
|
||||
.filter(FlexibleImport.file_type == filename)
|
||||
.count()
|
||||
)
|
||||
assert count == 2
|
||||
finally:
|
||||
# Clean up created rows to keep DB tidy
|
||||
db.query(FlexibleImport).filter(FlexibleImport.file_type == filename).delete()
|
||||
db.commit()
|
||||
db.close()
|
||||
finally:
|
||||
# Restore dependencies
|
||||
app.dependency_overrides.pop(get_current_user, None)
|
||||
|
||||
Reference in New Issue
Block a user