Testing
Running tests
# all tests (unit + integration; integration tests are skipped without a live DB)
pytest
# unit tests only (no database required)
pytest tests/unit/
# single file
pytest tests/unit/test_concept_tools.py
Test configuration
Integration tests that query the OMOP database require a .env file at the repo root
(or an environment-variable equivalent):
OMOP_CDM_DB_URL=postgresql://user:pass@localhost:5432/omop
Unit tests mock the adapter layer and run without a live database.
What is tested
| Area | Scope |
|---|---|
| Concept tools | All 8 deterministic concept tools: correct responses, NOT_FOUND errors, INVALID_INPUT guards, depth clamping |
| Resolver tools | concept_ground: empty query rejection, result ordering by score, match_kind on exact hits |
| Embedding tools | embedding_index_status, embedding_neighbours, embedding_search, embedding_encode: correct responses, clamped limits, error propagation |
| Server registry | create_server with and without each adapter; system tools always present; adapter-conditional tool registration |
| Config validation | OmopGraphConfig schema name validation; OmopEmbConfig enabled-without-url guard; extra field rejection |
| SQL resource | SQLResource get/list; SQLTextSearchResource ILIKE fallback |