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."]