fix: make deletion of single file commit to DB, create tests for file deletion (#8953)

* Added commit to db session

* Changed order

* Deleted flush

* Added test to files
This commit is contained in:
Lucas Oliveira 2025-07-09 12:17:54 -03:00 committed by GitHub
commit 1362aa1172
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 50 additions and 3 deletions

View file

@ -275,7 +275,6 @@ async def delete_files_batch(
await session.delete(file)
# Delete all files from the database
await session.flush() # Ensures delete is staged
await session.commit() # Commit deletion
except Exception as e:
@ -474,7 +473,7 @@ async def delete_file(
# Delete from the database
await session.delete(file_to_delete)
await session.flush() # Ensures delete is staged
await session.commit()
except HTTPException:
# Re-raise HTTPException to avoid being caught by the generic exception handler
@ -506,7 +505,6 @@ async def delete_all_files(
await session.delete(file)
# Delete all files from the database
await session.flush() # Ensures delete is staged
await session.commit() # Commit deletion
except Exception as e:

View file

@ -207,3 +207,52 @@ async def test_edit_file(files_client, files_created_api_key):
assert response.status_code == 200
file = response.json()
assert file["name"] == "potato.txt"
async def test_upload_list_delete_and_validate_files(files_client, files_created_api_key):
headers = {"x-api-key": files_created_api_key.api_key}
# Upload two files
response1 = await files_client.post(
"api/v2/files",
files={"file": ("file1.txt", b"content1")},
headers=headers,
)
assert response1.status_code == 201
file1 = response1.json()
response2 = await files_client.post(
"api/v2/files",
files={"file": ("file2.txt", b"content2")},
headers=headers,
)
assert response2.status_code == 201
file2 = response2.json()
# List files and validate both are present
response = await files_client.get("api/v2/files", headers=headers)
assert response.status_code == 200
files = response.json()
file_names = [f["name"] for f in files]
file_ids = [f["id"] for f in files]
assert file1["name"] in file_names
assert file2["name"] in file_names
assert file1["id"] in file_ids
assert file2["id"] in file_ids
assert len(files) == 2
# Delete one file
response = await files_client.delete(f"api/v2/files/{file1['id']}", headers=headers)
assert response.status_code == 200
# List files again and validate only the other remains
response = await files_client.get("api/v2/files", headers=headers)
assert response.status_code == 200
files = response.json()
file_names = [f["name"] for f in files]
file_ids = [f["id"] for f in files]
assert file1["name"] not in file_names
assert file1["id"] not in file_ids
assert file2["name"] in file_names
assert file2["id"] in file_ids
assert len(files) == 1