test: 7 agents — plugins ~158 tests, extractor 98-100%, dashboard routes 99-100%, git services 94-100%, services 94-100%, dataset_review 100%. Fix test_api_key_routes.py sys.modules pollution
This commit is contained in:
@@ -352,4 +352,163 @@ class TestClearTasks:
|
||||
client = _make_client({get_task_manager: lambda: mock_tm})
|
||||
resp = client.delete("/api/tasks?status=SUCCESS")
|
||||
assert resp.status_code == 204
|
||||
def test_create_llm_documentation_task_with_provider(self):
|
||||
"""Create task with llm_documentation — covers LLM provider block lines 80-123."""
|
||||
from src.core.task_manager import Task
|
||||
mock_tm = MagicMock()
|
||||
mock_task = MagicMock(spec=Task)
|
||||
mock_task.id = "task-llm"
|
||||
mock_task.plugin_id = "llm_documentation"
|
||||
mock_task.status = "PENDING"
|
||||
mock_task.params = {"provider_id": "prov-1", "dashboard_id": 42}
|
||||
mock_task.created_at = None
|
||||
mock_task.user_id = "admin"
|
||||
mock_task.input_request = None
|
||||
mock_tm.create_task = AsyncMock(return_value=mock_task)
|
||||
|
||||
mock_db = MagicMock()
|
||||
mock_llm_service = MagicMock()
|
||||
mock_provider = MagicMock()
|
||||
mock_provider.is_multimodal = True
|
||||
mock_llm_service.get_provider.return_value = mock_provider
|
||||
|
||||
from src.dependencies import get_task_manager
|
||||
with patch("src.core.database.SessionLocal", return_value=mock_db), \
|
||||
patch("src.services.llm_provider.LLMProviderService", return_value=mock_llm_service):
|
||||
client = _make_client({get_task_manager: lambda: mock_tm})
|
||||
resp = client.post("/api/tasks", json={
|
||||
"plugin_id": "llm_documentation",
|
||||
"params": {"provider_id": "prov-1", "dashboard_id": 42},
|
||||
})
|
||||
assert resp.status_code == 201
|
||||
mock_db.close.assert_called_once()
|
||||
|
||||
def test_create_llm_documentation_task_provider_not_found(self):
|
||||
"""llm_documentation with invalid provider raises ValueError (line 112-113)."""
|
||||
mock_tm = MagicMock()
|
||||
mock_tm.create_task = AsyncMock()
|
||||
mock_db = MagicMock()
|
||||
mock_llm_service = MagicMock()
|
||||
mock_llm_service.get_provider.return_value = None
|
||||
|
||||
from src.dependencies import get_task_manager
|
||||
with patch("src.core.database.SessionLocal", return_value=mock_db), \
|
||||
patch("src.services.llm_provider.LLMProviderService", return_value=mock_llm_service):
|
||||
client = _make_client({get_task_manager: lambda: mock_tm})
|
||||
resp = client.post("/api/tasks", json={
|
||||
"plugin_id": "llm_documentation",
|
||||
"params": {"provider_id": "bad-prov"},
|
||||
})
|
||||
# ValueError is raised, caught by the outer except -> 404
|
||||
assert resp.status_code == 404
|
||||
mock_db.close.assert_called_once()
|
||||
|
||||
def test_create_llm_documentation_no_provider_id_resolved(self):
|
||||
"""llm_documentation without provider_id — resolved from config binding (lines 87-108)."""
|
||||
from src.core.task_manager import Task
|
||||
mock_tm = MagicMock()
|
||||
mock_task = MagicMock(spec=Task)
|
||||
mock_task.id = "task-llm"
|
||||
mock_task.plugin_id = "llm_documentation"
|
||||
mock_task.status = "PENDING"
|
||||
mock_task.params = {"dashboard_id": 42}
|
||||
mock_task.created_at = None
|
||||
mock_task.user_id = "admin"
|
||||
mock_task.input_request = None
|
||||
mock_tm.create_task = AsyncMock(return_value=mock_task)
|
||||
|
||||
mock_db = MagicMock()
|
||||
mock_llm_service = MagicMock()
|
||||
mock_provider = MagicMock()
|
||||
mock_provider.is_multimodal = True
|
||||
mock_llm_service.get_provider.return_value = mock_provider
|
||||
mock_llm_service.get_all_providers.return_value = []
|
||||
|
||||
mock_config = MagicMock()
|
||||
mock_config.get_config.return_value.settings.llm = {}
|
||||
|
||||
from src.dependencies import get_task_manager, get_config_manager
|
||||
with patch("src.core.database.SessionLocal", return_value=mock_db), \
|
||||
patch("src.services.llm_provider.LLMProviderService", return_value=mock_llm_service), \
|
||||
patch("src.api.routes.tasks.normalize_llm_settings", return_value={}), \
|
||||
patch("src.api.routes.tasks.resolve_bound_provider_id", return_value=None):
|
||||
client = _make_client({
|
||||
get_task_manager: lambda: mock_tm,
|
||||
get_config_manager: lambda: mock_config,
|
||||
})
|
||||
resp = client.post("/api/tasks", json={
|
||||
"plugin_id": "llm_documentation",
|
||||
"params": {"dashboard_id": 42},
|
||||
})
|
||||
assert resp.status_code == 201
|
||||
mock_db.close.assert_called_once()
|
||||
|
||||
|
||||
# ── Additional edge cases ──
|
||||
|
||||
def test_create_llm_documentation_provider_from_binding(self):
|
||||
"""provider_id resolved from binding (line 100)."""
|
||||
from src.core.task_manager import Task
|
||||
mock_tm = MagicMock()
|
||||
mock_task = MagicMock(spec=Task)
|
||||
mock_task.id = "task-llm"
|
||||
mock_task.plugin_id = "llm_documentation"
|
||||
mock_task.status = "PENDING"
|
||||
mock_task.params = {"dashboard_id": 42}
|
||||
mock_task.created_at = None
|
||||
mock_task.user_id = "admin"
|
||||
mock_task.input_request = None
|
||||
mock_tm.create_task = AsyncMock(return_value=mock_task)
|
||||
|
||||
mock_db = MagicMock()
|
||||
mock_llm_service = MagicMock()
|
||||
mock_provider = MagicMock()
|
||||
mock_provider.is_multimodal = True
|
||||
mock_llm_service.get_provider.return_value = mock_provider
|
||||
mock_llm_service.get_all_providers.return_value = []
|
||||
|
||||
from src.dependencies import get_task_manager
|
||||
with patch("src.core.database.SessionLocal", return_value=mock_db), \
|
||||
patch("src.services.llm_provider.LLMProviderService", return_value=mock_llm_service), \
|
||||
patch("src.api.routes.tasks.resolve_bound_provider_id", return_value="prov-binding"):
|
||||
client = _make_client({get_task_manager: lambda: mock_tm})
|
||||
resp = client.post("/api/tasks", json={
|
||||
"plugin_id": "llm_documentation",
|
||||
"params": {"dashboard_id": 42},
|
||||
})
|
||||
assert resp.status_code == 201
|
||||
|
||||
def test_create_llm_documentation_provider_from_active(self):
|
||||
"""provider_id resolved from active provider fallback (lines 107-108)."""
|
||||
from src.core.task_manager import Task
|
||||
mock_tm = MagicMock()
|
||||
mock_task = MagicMock(spec=Task)
|
||||
mock_task.id = "task-llm"
|
||||
mock_task.plugin_id = "llm_documentation"
|
||||
mock_task.status = "PENDING"
|
||||
mock_task.params = {"dashboard_id": 42}
|
||||
mock_task.created_at = None
|
||||
mock_task.user_id = "admin"
|
||||
mock_task.input_request = None
|
||||
mock_tm.create_task = AsyncMock(return_value=mock_task)
|
||||
|
||||
mock_db = MagicMock()
|
||||
mock_llm_service = MagicMock()
|
||||
mock_provider = MagicMock()
|
||||
mock_provider.id = "prov-active"
|
||||
mock_provider.is_active = True
|
||||
mock_provider.is_multimodal = True
|
||||
mock_llm_service.get_provider.return_value = mock_provider
|
||||
mock_llm_service.get_all_providers.return_value = [mock_provider]
|
||||
|
||||
from src.dependencies import get_task_manager
|
||||
with patch("src.core.database.SessionLocal", return_value=mock_db), \
|
||||
patch("src.services.llm_provider.LLMProviderService", return_value=mock_llm_service), \
|
||||
patch("src.api.routes.tasks.resolve_bound_provider_id", return_value=None):
|
||||
client = _make_client({get_task_manager: lambda: mock_tm})
|
||||
resp = client.post("/api/tasks", json={
|
||||
"plugin_id": "llm_documentation",
|
||||
"params": {"dashboard_id": 42},
|
||||
})
|
||||
assert resp.status_code == 201
|
||||
# #endregion Test.Api.Tasks
|
||||
|
||||
Reference in New Issue
Block a user