gateway/tests/methods/test_method_web.py
2025-08-29 20:50:40 +02:00

72 lines
2.3 KiB
Python

"""Tests for method web.py"""
import logging
import pytest
from unittest.mock import patch
from modules.methods.method_web import MethodWeb
from tests.fixtures.tavily_responses import RESPONSE_HOW_OLD_IS_EARTH_NO_ANSWER
logger = logging.getLogger(__name__)
@pytest.mark.asyncio
@pytest.mark.expensive
async def test_method_web_search_live():
"""Tests method web search with live API calls."""
method_web = MethodWeb(serviceCenter=None)
# Actual request
action_result = await method_web.search(
{"query": "How old is the earth", "maxResults": 5}
)
# Evaluate results
assert action_result.success
assert len(action_result.documents) > 0
logger.info("=" * 20)
logger.info(f"Action result success status: {action_result.success}")
logger.info(f"Action result error: {action_result.error}")
logger.info(f"Action result label: {action_result.resultLabel}")
logger.info("Documents:")
for doc in action_result.documents:
logger.info("-" * 10)
logger.info(f" - Document Name: {doc.documentName}")
logger.info(f" - Document Mime Type: {doc.mimeType}")
logger.info(f" - Document Data: {doc.documentData}")
@pytest.mark.asyncio
async def test_method_web_search_dummy():
"""Tests method web search with dummy response data - no external API calls."""
method_web = MethodWeb(serviceCenter=None)
# Mock the Tavily API response
with patch(
"tavily.AsyncTavilyClient.search",
return_value=RESPONSE_HOW_OLD_IS_EARTH_NO_ANSWER,
) as mock_client:
action_result = await method_web.search(
{"query": "How old is the earth", "maxResults": 5}
)
mock_client.assert_called_once()
# Evaluate results
assert action_result.success
assert len(action_result.documents) > 0
logger.info("=" * 20)
logger.info(f"Action result success status: {action_result.success}")
logger.info(f"Action result error: {action_result.error}")
logger.info(f"Action result label: {action_result.resultLabel}")
logger.info("Documents:")
for doc in action_result.documents:
logger.info("-" * 10)
logger.info(f" - Document Name: {doc.documentName}")
logger.info(f" - Document Mime Type: {doc.mimeType}")
logger.info(f" - Document Data: {doc.documentData}")