diff --git a/tests/conftest.py b/tests/conftest.py index b01ba5f..e9b51e2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,6 +9,8 @@ from httpx import ASGITransport, AsyncClient from fastapi import FastAPI from langgraph.checkpoint.memory import MemorySaver from langchain_core.messages import AIMessage +from langchain_anthropic import ChatAnthropic +from langchain_deepseek import ChatDeepSeek from naliiabot.bot.prompts.load_prompt import get_prompt_template from naliiabot.bot.tools.naliia_tools import NaliiaTools import naliiabotapi.api.dependencies as deps @@ -241,3 +243,19 @@ def send_message_payload(): "server_url": "http://localhost:8080", "apikey": "98B6B820AFC3-4544-9A4C-011B0719C2D1" } + + +@pytest.fixture +def mock_chat_anthropic(): + """Mock para ChatAnthropic que no requiere API key.""" + mock = Mock(spec=ChatAnthropic) + mock.model_name = "claude-sonnet-4-5-20250929" + return mock + + +@pytest.fixture +def mock_chat_deepseek(): + """Mock para ChatDeepSeek que no requiere API key.""" + mock = Mock(spec=ChatDeepSeek) + mock.model_name = "deepseek-chat" + return mock diff --git a/tests/test_factories.py b/tests/test_factories.py index c42dbb1..e45917e 100644 --- a/tests/test_factories.py +++ b/tests/test_factories.py @@ -1,17 +1,35 @@ import pytest +from unittest.mock import Mock from naliiabot.bot.factories.llm_factory import LLMFactory from naliiabot.bot.exceptions import NotFoundProviderError from langchain_anthropic import ChatAnthropic from langchain_deepseek import ChatDeepSeek -def test_llm_factory(): - - antrophicModel = LLMFactory("anthropic").get_model() - assert isinstance(antrophicModel, ChatAnthropic) is True - - deepseekModel = LLMFactory("deepseek").get_model() - assert isinstance(deepseekModel, ChatDeepSeek) +def test_llm_factory(monkeypatch, mock_chat_anthropic, mock_chat_deepseek): + """Test que LLMFactory retorna el tipo correcto de modelo segĂșn el provider.""" + + # Mock ChatAnthropic para evitar necesitar API key + monkeypatch.setattr( + "naliiabot.bot.factories.llm_factory.ChatAnthropic", + Mock(return_value=mock_chat_anthropic) + ) + + # Mock ChatDeepSeek para evitar necesitar API key + monkeypatch.setattr( + "naliiabot.bot.factories.llm_factory.ChatDeepSeek", + Mock(return_value=mock_chat_deepseek) + ) + + # Test Anthropic + anthropic_model = LLMFactory("anthropic").get_model() + assert isinstance(anthropic_model, Mock) + assert anthropic_model == mock_chat_anthropic + + # Test DeepSeek + deepseek_model = LLMFactory("deepseek").get_model() + assert isinstance(deepseek_model, Mock) + assert deepseek_model == mock_chat_deepseek def test_get_model_raises_exception_when_provider_not_found():