from __future__ import annotations from app.core.agent.processes.v2.workflows.doc_explain_api_exposed.steps.retrieval.api_endpoint_collector import ( ApiEndpointCollector, ) def test_collector_returns_method_and_path_lines() -> None: rows = [ { "metadata": { "endpoint": "GET|POST /actions/{action}", "summary_text": "Endpoint for runtime control actions", }, "title": "HTTP API /actions/{action}", "path": "docs/api/control-actions-endpoint.md", "content": "", }, { "metadata": { "endpoint": "GET /health", }, "title": "HTTP API /health", "path": "docs/api/health-endpoint.md", "content": "", }, ] endpoints = ApiEndpointCollector().collect(rows) assert "GET /actions/{action}" in endpoints assert "POST /actions/{action}" in endpoints assert "GET /health" in endpoints def test_collector_ignores_file_paths_from_content() -> None: rows = [ { "metadata": { "endpoint": "GET /health", "summary_text": "Uses src/telegram_notify_app/control_api.py", }, "title": "Health endpoint", "path": "docs/api/health-endpoint.md", "content": "See /telegram_notify_app/control_api.py and /telegram_notify_app/worker.py", } ] endpoints = ApiEndpointCollector().collect(rows) assert endpoints == ["GET /health"] def test_collector_ignores_title_when_endpoint_metadata_missing() -> None: rows = [ { "metadata": { "summary_text": "Control actions endpoint", }, "title": "HTTP API /actions/{action}", "path": "docs/api/control-actions-endpoint.md", "content": "", } ] endpoints = ApiEndpointCollector().collect(rows) assert endpoints == []