mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-10-03 06:40:31 +00:00
Two fixtures created a temporary index directory and pointed INDEX_DIR at it, and paperless_dirs did the same, so a test that requested more than one got whichever assignment ran last. The search conftest no longer defines its own index_dir fixture, the tests that took it read paperless_dirs.index_dir instead, and _search_index is now a thin wrapper that requests paperless_dirs. The fixture that yields a Document is renamed from indexed_document to searchable_document so it no longer differs by one character from the index_document factory next to it.
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
import shutil
|
|
from pathlib import Path
|
|
from typing import TYPE_CHECKING
|
|
|
|
import filelock
|
|
import pytest
|
|
|
|
from paperless_testing.factories import DocumentFactory
|
|
|
|
if TYPE_CHECKING:
|
|
from documents.models import Document
|
|
from paperless_testing.dirs import PaperlessDirs
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def document_samples_dir() -> Path:
|
|
"""Path to the shared test sample documents."""
|
|
return Path(__file__).parent / "samples" / "documents"
|
|
|
|
|
|
@pytest.fixture()
|
|
def sample_doc(
|
|
paperless_dirs: "PaperlessDirs",
|
|
document_samples_dir: Path,
|
|
) -> "Document":
|
|
"""Create a document with valid files and matching checksums."""
|
|
with filelock.FileLock(paperless_dirs.media_lock):
|
|
shutil.copy(
|
|
document_samples_dir / "originals" / "0000001.pdf",
|
|
paperless_dirs.originals_dir / "0000001.pdf",
|
|
)
|
|
shutil.copy(
|
|
document_samples_dir / "archive" / "0000001.pdf",
|
|
paperless_dirs.archive_dir / "0000001.pdf",
|
|
)
|
|
shutil.copy(
|
|
document_samples_dir / "thumbnails" / "0000001.webp",
|
|
paperless_dirs.thumbnail_dir / "0000001.webp",
|
|
)
|
|
|
|
return DocumentFactory(
|
|
title="test",
|
|
checksum="1093cf6e32adbd16b06969df09215d42c4a3a8938cc18b39455953f08d1ff2ab",
|
|
archive_checksum="706124ecde3c31616992fa979caed17a726b1c9ccdba70e82a4ff796cea97ccf",
|
|
content="test content",
|
|
pk=1,
|
|
filename="0000001.pdf",
|
|
mime_type="application/pdf",
|
|
archive_filename="0000001.pdf",
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def _search_index(paperless_dirs: "PaperlessDirs") -> None:
|
|
"""Point the search backend at a fresh, empty index directory.
|
|
|
|
paperless_dirs owns INDEX_DIR and resets the backend singleton on both
|
|
sides of the test, so requesting it is all that is needed.
|
|
"""
|
|
|
|
|
|
@pytest.fixture
|
|
def searchable_document(_search_index: None) -> "Document":
|
|
"""One searchable document, for tests about what the search endpoint
|
|
returns rather than about what it finds.
|
|
"""
|
|
from documents.search import get_backend
|
|
|
|
doc = DocumentFactory.create(title="quarterly invoice", content="acme corp")
|
|
get_backend().add_or_update(doc)
|
|
return doc
|