Skip to main content
Glama
test_wiki_page_move.py4.49 kB
"""Test suite for MediaWiki move handlers.""" from unittest.mock import MagicMock import pytest from mediawiki_api_mcp.client import MediaWikiClient from mediawiki_api_mcp.handlers.wiki_page_move import handle_move_page class TestMoveHandlers: """Test cases for move-related handlers.""" @pytest.fixture def mock_client(self): """Create a mock MediaWiki client.""" client = MagicMock(spec=MediaWikiClient) return client @pytest.mark.asyncio async def test_handle_move_page_success(self, mock_client): """Test successful page move.""" # Setup mock response mock_client.move_page.return_value = { "from": "Old Title", "to": "New Title", "reason": "Test move" } arguments = { "from": "Old Title", "to": "New Title", "reason": "Test move" } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Successfully moved page 'Old Title' to 'New Title'" in result[0].text assert "Reason: Test move" in result[0].text @pytest.mark.asyncio async def test_handle_move_page_with_talk(self, mock_client): """Test page move with talk page.""" # Setup mock response mock_client.move_page.return_value = { "from": "Old Title", "to": "New Title", "reason": "Test move", "talkfrom": "Talk:Old Title", "talkto": "Talk:New Title" } arguments = { "from": "Old Title", "to": "New Title", "reason": "Test move", "movetalk": True } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Successfully moved page 'Old Title' to 'New Title'" in result[0].text assert "Talk page moved from 'Talk:Old Title' to 'Talk:New Title'" in result[0].text @pytest.mark.asyncio async def test_handle_move_page_missing_from_params(self, mock_client): """Test move page with missing from parameters.""" arguments = { "to": "New Title" } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Error: Either 'from' or 'fromid' must be provided" in result[0].text @pytest.mark.asyncio async def test_handle_move_page_missing_to_param(self, mock_client): """Test move page with missing to parameter.""" arguments = { "from": "Old Title" } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Error: 'to' parameter is required" in result[0].text @pytest.mark.asyncio async def test_handle_move_page_error_response(self, mock_client): """Test move page with error response.""" mock_client.move_page.return_value = { "error": { "code": "cantmove", "info": "You don't have permission to move this page" } } arguments = { "from": "Old Title", "to": "New Title" } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Move failed (cantmove): You don't have permission to move this page" in result[0].text @pytest.mark.asyncio async def test_handle_move_page_exception(self, mock_client): """Test move page with client exception.""" mock_client.move_page.side_effect = Exception("Network error") arguments = { "from": "Old Title", "to": "New Title" } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Error moving page: Network error" in result[0].text @pytest.mark.asyncio async def test_handle_move_page_with_fromid(self, mock_client): """Test page move using page ID.""" # Setup mock response mock_client.move_page.return_value = { "from": "Old Title", "to": "New Title", "reason": "" } arguments = { "fromid": 12345, "to": "New Title" } result = await handle_move_page(mock_client, arguments) assert len(result) == 1 assert "Successfully moved page 'Old Title' to 'New Title'" in result[0].text

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/entanglr/mediawiki-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server