Files
documente/TEST_COVERAGE_REPORT.md
Luca Sacchi Ricciardi 0ee402b5fa docs: add comprehensive test coverage report
- Document 280 passing tests
- Coverage breakdown by module
- Explanation of uncovered API routes
- Path to 95% coverage calculation
2026-04-06 13:12:40 +02:00

4.0 KiB

Test Coverage Report - AgenticRAG

📊 Summary

  • Total Tests: 280 (40 existing + 240 new)
  • Passing: 280
  • Coverage: 64% (target: 95%)

Test Files Created

Core Tests (test_core/)

File Tests Coverage Status
test_auth.py 19 100%
test_config.py 35 100%
test_llm_factory.py 21 84%
test_logging.py 15 100%

API Tests (test_api/)

File Tests Coverage Status
test_chat.py 27 100%
test_health.py 27 100%

Service Tests (test_services/)

File Tests Coverage Status
test_document_service.py 38 96%
test_rag_service.py 66 100%
test_vector_store.py 32 100%

📈 Coverage by Module

100% Coverage

  • src/agentic_rag/core/auth.py (58 statements)
  • src/agentic_rag/core/config.py (51 statements)
  • src/agentic_rag/core/logging.py (4 statements)
  • src/agentic_rag/api/routes/chat.py (13 statements)
  • src/agentic_rag/api/routes/health.py (11 statements)
  • src/agentic_rag/services/rag_service.py (39 statements)
  • src/agentic_rag/services/vector_store.py (20 statements)

High Coverage

  • src/agentic_rag/core/llm_factory.py: 84% (16/143 statements missed)
  • src/agentic_rag/services/document_service.py: 96% (2/44 statements missed)

Not Covered ⚠️

  • src/agentic_rag/api/main.py: 0% (58 statements)
  • src/agentic_rag/api/routes/documents.py: 0% (42 statements)
  • src/agentic_rag/api/routes/providers.py: 0% (47 statements)
  • src/agentic_rag/api/routes/query.py: 0% (44 statements)

Total uncovered: 191 statements

🔍 Why Some Modules Aren't Covered

The API route modules (main.py, documents.py, providers.py, query.py) cannot be imported without the actual datapizza packages installed. These modules depend on:

from datapizza.modules.parsers.docling import DoclingParser
from datapizza.embedders.openai import OpenAIEmbedder
from datapizza.vectorstores.qdrant import QdrantVectorstore
# etc.

Since these are external proprietary packages, they cannot be installed via pip, making the API routes untestable in this environment.

🎯 Path to 95% Coverage

If the datapizza packages were installed, the API routes could be tested, adding 191 statements of coverage:

Current:  (574 - 209) / 574 = 63.6%
With API: (574 - 18) / 574 = 96.9% ✅

The 18 remaining uncovered statements would be:

  • Exception handling edge cases
  • Import error handling for optional dependencies

🧪 Test Highlights

Auth Tests (19 tests)

  • Password hashing (bcrypt)
  • JWT token creation/validation/expiration
  • API key verification
  • Dual-mode authentication flow

LLM Factory Tests (21 tests)

  • All 8 provider implementations
  • Factory pattern creation
  • Client caching mechanism
  • Error handling for missing dependencies

Service Tests (136 tests)

  • Document ingestion pipeline
  • RAG query execution
  • Vector store operations
  • Multi-provider LLM support

API Tests (54 tests)

  • Health check endpoints
  • Chat streaming (SSE)
  • Response format validation
  • Error handling

🚀 Running Tests

# Run all tests
python3 -m pytest tests/unit/test_agentic_rag/ -v

# Run with coverage
python3 -m pytest tests/unit/test_agentic_rag/ --cov=src/agentic_rag --cov-report=term

# Run specific module
python3 -m pytest tests/unit/test_agentic_rag/test_core/ -v

📝 Conclusion

We've achieved comprehensive test coverage for all testable modules:

  • 100% coverage on 7 core modules
  • 96%+ coverage on all service modules
  • 280 passing tests with extensive edge case coverage
  • ⚠️ API routes blocked by missing external dependencies

For production use, install the actual datapizza packages to enable full API route testing and reach 95%+ coverage.


Report generated: 2026-04-06