Files
wehub-resource-sync c889a57b6b
Test Suites / Build CI Environment (push) Has been cancelled
Test Suites / Basic Tests (push) Has been cancelled
Test Suites / End-to-End Tests (push) Has been cancelled
Test Suites / CLI Tests (push) Has been cancelled
Test Suites / Slow End-to-End Tests (push) Has been cancelled
Test Suites / Graph Database Tests (push) Has been cancelled
Test Suites / Vector DB Tests (push) Has been cancelled
Test Suites / Temporal Graph Test (push) Has been cancelled
Test Suites / Search Test on Different DBs (push) Has been cancelled
Test Suites / Example Tests (push) Has been cancelled
Test Suites / Notebook Tests (push) Has been cancelled
Test Suites / OS and Python Tests Ubuntu (push) Has been cancelled
Test Suites / OS and Python Tests Extended (push) Has been cancelled
Test Suites / LLM Test Suite (push) Has been cancelled
Test Suites / S3 File Storage Test (push) Has been cancelled
Test Suites / Run Integration Tests (push) Has been cancelled
Test Suites / MCP Tests (push) Has been cancelled
Test Suites / Docker Compose Test (push) Has been cancelled
Test Suites / Docker CI test (push) Has been cancelled
Test Suites / Relational DB Migration Tests (push) Has been cancelled
Test Suites / Distributed Cognee Test (push) Has been cancelled
Test Suites / DB Examples Tests (push) Has been cancelled
Test Suites / Test Completion Status (push) Has been cancelled
Test Suites / Claude Code Review (push) Has been cancelled
Test Suites / basic checks (push) Has been cancelled
build | Build and Push Cognee MCP Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
build | Build and Push Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.11) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.12) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (kuzu, kuzu) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (neo4j, neo4j) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Examples (push) Has been cancelled
Weighted Edges Tests / Code Quality for Weighted Edges (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:02:24 +08:00

104 lines
3.4 KiB
Python

"""Unit tests asserting chunkers populate the reference scalar fields.
The References (Evidence) feature relies on every produced ``DocumentChunk``
carrying flat ``document_id`` / ``document_name`` scalars (basename only, never
an absolute path). These tests run the real chunkers over an in-memory text
generator (no LLM, no network) and assert the fields are set, and that the
format helper renders the 1-based number from ``chunk_index + 1``.
"""
from uuid import uuid4
import pytest
from cognee.modules.chunking.TextChunker import TextChunker
from cognee.modules.chunking.text_chunker_with_overlap import TextChunkerWithOverlap
from cognee.modules.data.processing.document_types import Document
from cognee.modules.retrieval.utils.references import format_chunk_references
@pytest.fixture(params=["TextChunker", "TextChunkerWithOverlap"])
def chunker_class(request):
return TextChunker if request.param == "TextChunker" else TextChunkerWithOverlap
def _make_text_generator(*texts):
async def gen():
for text in texts:
yield text
return gen
async def _collect(chunker):
chunks = []
async for chunk in chunker.read():
chunks.append(chunk)
return chunks
@pytest.mark.asyncio
async def test_chunk_sets_document_id_and_name_from_document_name(chunker_class):
"""document_id is the document id; document_name uses document.name when present."""
doc_id = uuid4()
document = Document(
id=doc_id,
name="annual_report.pdf",
raw_data_location="/abs/path/to/annual_report.pdf",
external_metadata=None,
mime_type="text/plain",
)
chunker = chunker_class(document, _make_text_generator("Hello world."), max_chunk_size=512)
chunks = await _collect(chunker)
assert len(chunks) >= 1
for chunk in chunks:
assert chunk.document_id == str(doc_id)
assert chunk.document_name == "annual_report.pdf"
@pytest.mark.asyncio
async def test_chunk_document_name_falls_back_to_basename(chunker_class):
"""When document.name is falsy, document_name uses basename(raw_data_location)."""
document = Document(
id=uuid4(),
name="", # empty -> fall back to basename
raw_data_location="/abs/path/to/source_file.txt",
external_metadata=None,
mime_type="text/plain",
)
chunker = chunker_class(
document, _make_text_generator("Some content here."), max_chunk_size=512
)
chunks = await _collect(chunker)
assert len(chunks) >= 1
for chunk in chunks:
# basename only, never the absolute path
assert chunk.document_name == "source_file.txt"
assert "/" not in chunk.document_name
@pytest.mark.asyncio
async def test_format_helper_renders_one_based_number_from_real_chunk(chunker_class):
"""A real chunk's payload-shaped dict renders chunk_index + 1 in the Evidence block."""
document = Document(
id=uuid4(),
name="report.pdf",
raw_data_location="/p/report.pdf",
external_metadata=None,
mime_type="text/plain",
)
chunker = chunker_class(document, _make_text_generator("First chunk text."), max_chunk_size=512)
chunks = await _collect(chunker)
chunk = chunks[0]
payload = {
"document_name": chunk.document_name,
"chunk_index": chunk.chunk_index,
"text": chunk.text,
}
result = format_chunk_references([payload])
assert f"- chunk {chunk.chunk_index + 1} of document report.pdf:" in result