| from unittest.mock import AsyncMock, MagicMock, patch |
|
|
| from fastapi.testclient import TestClient |
|
|
| from src.server.auth.dependencies import get_current_user |
| from src.server.main import app |
|
|
|
|
| |
| def setup_module(module): |
| |
| app.dependency_overrides[get_current_user] = lambda: { |
| "id": "user-knowledge", |
| "role": "system_admin", |
| "department": "Engineering", |
| } |
|
|
|
|
| def teardown_module(module): |
| app.dependency_overrides.pop(get_current_user, None) |
|
|
|
|
| client = TestClient(app) |
|
|
|
|
| def test_knowledge_summary_endpoint(): |
| |
| with patch("src.server.api_routes.knowledge.items.KnowledgeItemService") as mock_class: |
| mock_inst = MagicMock() |
| mock_inst.get_available_sources = AsyncMock(return_value=(True, [])) |
| mock_class.return_value = mock_inst |
|
|
| response = client.get("/api/knowledge-items/sources") |
| assert response.status_code == 200 |
|
|
|
|
| def test_chunks_pagination(): |
| |
| with patch("src.server.api_routes.knowledge.items.KnowledgeSummaryService") as mock_class: |
| mock_inst = MagicMock() |
| mock_inst.get_item_chunks = AsyncMock(return_value=(True, [])) |
| mock_class.return_value = mock_inst |
|
|
| response = client.get("/api/knowledge-items/source-1/chunks") |
| assert response.status_code == 200 |
|
|
|
|
| def test_pagination_limit_validation(): |
| |
| with patch("src.server.api_routes.knowledge.items.KnowledgeItemService") as mock_class: |
| mock_inst = MagicMock() |
| mock_inst.list_items = AsyncMock(return_value=(True, [])) |
| mock_class.return_value = mock_inst |
| response = client.get("/api/knowledge-items?per_page=10") |
| assert response.status_code == 200 |
|
|
|
|
| def test_empty_results_pagination(): |
| with patch("src.server.api_routes.knowledge.items.KnowledgeItemService") as mock_class: |
| mock_inst = MagicMock() |
| mock_inst.list_items = AsyncMock(return_value=(True, [])) |
| mock_class.return_value = mock_inst |
| response = client.get("/api/knowledge-items?page=100") |
| assert response.status_code == 200 |
|
|
|
|
| def test_code_examples_rag_endpoint(): |
| |
| with patch("src.server.api_routes.knowledge.search.RAGService") as mock_class: |
| mock_inst = MagicMock() |
| mock_inst.search_code_examples_service = AsyncMock(return_value=(True, [])) |
| mock_class.return_value = mock_inst |
|
|
| |
| response = client.post("/api/code-examples", json={"query": "test"}) |
| assert response.status_code == 200 |
|
|