Files
markitect-tool/tests/test_query_engine_registry.py

29 lines
1.2 KiB
Python

from markitect_tool.core import parse_markdown
from markitect_tool.query import (
default_query_engine_registry,
extract_document_with_engine,
query_document_with_engine,
)
def test_default_query_engine_registry_exposes_builtin_descriptors():
registry = default_query_engine_registry()
descriptors = registry.extension_registry().to_dict()["extensions"]
assert [engine.descriptor.id for engine in registry.list()] == ["jsonpath", "selector"]
assert {descriptor["id"] for descriptor in descriptors} == {"selector", "jsonpath"}
assert registry.get("selector").descriptor.cli["commands"][0] == "mkt query"
assert registry.get("jsonpath").descriptor.optional_dependencies[0].name == "jsonpath_ng"
def test_query_document_with_engine_uses_selector_registry():
document = parse_markdown("# Doc\n\n## Decision\n\nChosen.\n")
matches = query_document_with_engine(document, "sections[heading=Decision]", engine="selector")
extracted = extract_document_with_engine(document, "sections[heading=Decision]", engine="selector")
assert matches[0].kind == "section"
assert matches[0].path == "$.sections[1]"
assert extracted == ["## Decision\n\nChosen."]