Kagi MCP Server

"""Tests for paper search functionality.""" import pytest import json from unittest.mock import patch from arxiv_mcp_server.tools import handle_search @pytest.mark.asyncio async def test_basic_search(mock_client): """Test basic paper search functionality.""" with patch("arxiv.Client", return_value=mock_client): result = await handle_search({"query": "test query", "max_results": 1}) assert len(result) == 1 content = json.loads(result[0].text) assert content["total_results"] == 1 paper = content["papers"][0] assert paper["id"] == "2103.12345" assert paper["title"] == "Test Paper" assert "resource_uri" in paper @pytest.mark.asyncio async def test_search_with_categories(mock_client): """Test paper search with category filtering.""" with patch("arxiv.Client", return_value=mock_client): result = await handle_search( {"query": "test query", "categories": ["cs.AI", "cs.LG"], "max_results": 1} ) content = json.loads(result[0].text) assert content["papers"][0]["categories"] == ["cs.AI", "cs.LG"] @pytest.mark.asyncio async def test_search_with_dates(mock_client): """Test paper search with date filtering.""" with patch("arxiv.Client", return_value=mock_client): result = await handle_search( { "query": "test query", "date_from": "2022-01-01", "date_to": "2024-01-01", "max_results": 1, } ) content = json.loads(result[0].text) assert content["total_results"] == 1 assert len(content["papers"]) == 1 @pytest.mark.asyncio async def test_search_with_invalid_dates(mock_client): """Test search with invalid date formats.""" with patch("arxiv.Client", return_value=mock_client): result = await handle_search( {"query": "test query", "date_from": "invalid-date", "max_results": 1} ) assert result[0].text.startswith("Error: Invalid date format")