""" Integration tests that exercise the service layer end-to-end (with mocked LLMs). """ import pytest from unittest.mock import patch, MagicMock from app.core.schemas import TripRequest @patch("app.services.inference.build_events_agent") @patch("app.services.inference.build_planner_agent") @patch("app.services.inference.build_formatter_agent") @patch("app.services.inference.build_events_task") @patch("app.services.inference.build_planner_task") @patch("app.services.inference.build_formatting_task") @patch("app.services.inference.Crew") def test_run_full_crew( mock_crew_cls, mock_fmt_task, mock_plan_task, mock_ev_task, mock_fmt_agent, mock_plan_agent, mock_ev_agent, ): from app.services.inference import run_full_crew mock_crew_instance = MagicMock() mock_crew_instance.kickoff.return_value = "Mocked itinerary" mock_crew_cls.return_value = mock_crew_instance trip = TripRequest( from_city="Cairo", destination_city="Luxor", date_from="2026/6/19", date_to="2026/6/20", tags=["historical_site"], interests="history", ) result = run_full_crew(trip, "[]") assert result == "Mocked itinerary" mock_crew_instance.kickoff.assert_called_once() @patch("app.services.inference.build_events_agent") @patch("app.services.inference.build_events_task") @patch("app.services.inference.Crew") def test_run_events_only_crew(mock_crew_cls, mock_ev_task, mock_ev_agent): from app.services.inference import run_events_only_crew mock_crew_instance = MagicMock() mock_crew_instance.kickoff.return_value = '{"events": []}' mock_crew_cls.return_value = mock_crew_instance trip = TripRequest( from_city="Cairo", destination_city="Luxor", date_from="2026/6/19", date_to="2026/6/20", tags=[], interests="sightseeing", ) result = run_events_only_crew(trip) assert result == '{"events": []}'