FitMop/backend/tests/test_recommendations.py

39 lines
1.4 KiB
Python

import pytest
from unittest.mock import MagicMock, patch
from recommendations.engine import RecommendationEngine
@patch("google.genai.Client")
def test_chat_with_data_success(mock_genai_client):
# Setup mock
mock_chat = MagicMock()
mock_chat.send_message.return_value.text = "Keep it up!"
mock_client_inst = MagicMock()
mock_client_inst.chats.create.return_value = mock_chat
mock_genai_client.return_value = mock_client_inst
engine = RecommendationEngine(api_key="fake_key")
response = engine.chat_with_data("Hello", history=[])
assert response == "Keep it up!"
assert mock_client_inst.chats.create.called
@patch("google.genai.Client")
def test_get_recommendation_calls_chat(mock_genai_client):
mock_chat = MagicMock()
mock_chat.send_message.return_value.text = "Tip!"
mock_client_inst = MagicMock()
mock_client_inst.chats.create.return_value = mock_chat
mock_genai_client.return_value = mock_client_inst
engine = RecommendationEngine(api_key="fake_key")
response = engine.get_recommendation([], "fitness")
assert response == "Tip!"
@patch("os.getenv", return_value=None)
def test_mock_response_when_no_api_key(mock_env):
engine = RecommendationEngine(api_key=None)
# Mocking is done via client=None check
response = engine.chat_with_data("Hello")
assert "AI unavailable" in response