generated from john/python-template
Delete Document & Delete Source buttons now delete the underlying files
This commit is contained in:
@@ -93,10 +93,11 @@ class TestTranscriptionServiceRevisionUpsert:
|
||||
assert revisions[0].revised_text == "Revision v2"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_source_from_job_context_removes_source_and_single_link(self, default_session_factory):
|
||||
async def test_delete_source_from_job_context_removes_source_and_single_link(self, default_session_factory, tmp_path):
|
||||
documents = DocumentService(session_factory=default_session_factory)
|
||||
jobs = JobService(session_factory=default_session_factory)
|
||||
transcriptions = TranscriptionService(session_factory=default_session_factory)
|
||||
transcriptions.settings.upload_dir = tmp_path
|
||||
|
||||
document = Document(id=uuid4(), name="delete-source-success")
|
||||
await documents.create_document(document=document)
|
||||
@@ -104,12 +105,16 @@ class TestTranscriptionServiceRevisionUpsert:
|
||||
job = Job(document_id=document.id, status=JobStatus.QUEUED)
|
||||
await jobs.create_job(job=job)
|
||||
|
||||
stored_path = tmp_path / "documents" / str(document.id) / "delete.jpg"
|
||||
stored_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
stored_path.write_bytes(b"data")
|
||||
|
||||
source = Source(
|
||||
document_id=document.id,
|
||||
page_number=1,
|
||||
upload_name="delete.jpg",
|
||||
filename="delete.jpg",
|
||||
file_path="uploads/delete.jpg",
|
||||
file_path=str(stored_path),
|
||||
)
|
||||
async with transcriptions._session_scope() as session:
|
||||
session.add(source)
|
||||
@@ -122,6 +127,7 @@ class TestTranscriptionServiceRevisionUpsert:
|
||||
|
||||
with pytest.raises(TranscriptionNotFoundError):
|
||||
await transcriptions.read_source(source.id)
|
||||
assert not stored_path.exists()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_source_from_job_context_blocks_when_other_job_links_exist(self, default_session_factory):
|
||||
@@ -156,19 +162,24 @@ class TestTranscriptionServiceRevisionUpsert:
|
||||
await transcriptions.delete_source_from_job_context(job_id=job_one.id, source_id=source.id)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_unlinked_source_succeeds(self, default_session_factory):
|
||||
async def test_delete_unlinked_source_succeeds(self, default_session_factory, tmp_path):
|
||||
documents = DocumentService(session_factory=default_session_factory)
|
||||
transcriptions = TranscriptionService(session_factory=default_session_factory)
|
||||
transcriptions.settings.upload_dir = tmp_path
|
||||
|
||||
document = Document(id=uuid4(), name="delete-unlinked-source")
|
||||
await documents.create_document(document=document)
|
||||
|
||||
stored_path = tmp_path / "documents" / str(document.id) / "orphan.jpg"
|
||||
stored_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
stored_path.write_bytes(b"data")
|
||||
|
||||
source = Source(
|
||||
document_id=document.id,
|
||||
page_number=1,
|
||||
upload_name="orphan.jpg",
|
||||
filename="orphan.jpg",
|
||||
file_path="uploads/orphan.jpg",
|
||||
file_path=str(stored_path),
|
||||
)
|
||||
await transcriptions.create_source(source=source)
|
||||
|
||||
@@ -176,6 +187,7 @@ class TestTranscriptionServiceRevisionUpsert:
|
||||
|
||||
with pytest.raises(TranscriptionNotFoundError):
|
||||
await transcriptions.read_source(source.id)
|
||||
assert not stored_path.exists()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_unlinked_source_blocks_when_linked(self, default_session_factory):
|
||||
|
||||
Reference in New Issue
Block a user