generated from coulomb/repo-seed
29 lines
1.2 KiB
Python
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."]
|