This repository has been archived on 2026-10-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
recoll-modern/tests/domain/test_search.py
T

37 lines
1.7 KiB
Python

"""Search projections use current membership and Unicode text bounds."""
from pathlib import Path
from recoll_modern.domain.models import CollectionCreate
from recoll_modern.domain.search import SearchInput, SearchService
from recoll_modern.engine.fake import FakeEngine, FakeRecord
from recoll_modern.indexing.discovery import ObservedFile
from recoll_modern.indexing.paths import PathPolicy
from recoll_modern.storage.collections import SQLiteCollectionRepository
from recoll_modern.storage.database import Database
from recoll_modern.storage.documents import DocumentRepository
from recoll_modern.storage.membership import MembershipRepository
def test_unicode_limit_and_stale_membership_are_checked_against_sqlite(tmp_path: Path) -> None:
root = tmp_path / "docs"
root.mkdir()
path = root / "é.txt"
path.write_text("🦊alpha")
database = Database(tmp_path / "state.sqlite3")
database.migrate()
collection = SQLiteCollectionRepository(database).create(CollectionCreate("Books", None))
documents = DocumentRepository(database)
digest = "e" * 64
documents.observe_files([ObservedFile("é.txt", digest, path.stat().st_size)])
memberships = MembershipRepository(database)
memberships.add_direct(collection.id, digest)
engine = FakeEngine([FakeRecord(
str(path), "Book", "🦊alpha", (collection.id, "c0000000000")
)])
service = SearchService(engine, documents, memberships, PathPolicy(root), 2)
result = service.search(SearchInput("alpha", (collection.id,), ("text", "collections"),
text_limit=20))
assert result.hits == [{"document_id": digest, "collections": [collection.id],
"text": "🦊a", "text_truncated": True}]