import pytest from unittest.mock import patch, MagicMock import pandas as pd from connectors.slack_handler import SlackHandler @pytest.fixture def slack_handler(): return SlackHandler() @patch('connectors.slack_handler.WebClient') def test_fetch_messages_success(mock_webclient, slack_handler): mock_client = MagicMock() mock_webclient.return_value = mock_client mock_client.conversations_history.return_value = { "ok": True, "messages": [ {"user": "U123", "text": "Hello world", "ts": "12345.67"} ] } df = slack_handler.fetch_messages("fake-token", "C123") assert not df.empty assert len(df) == 1 assert df.iloc[0]["Content"] == "Hello world" assert df.iloc[0]["Sender"] == "U123" @patch('connectors.slack_handler.WebClient') def test_fetch_messages_api_error(mock_webclient, slack_handler): mock_client = MagicMock() mock_webclient.return_value = mock_client from slack_sdk.errors import SlackApiError mock_client.conversations_history.side_effect = SlackApiError("Error", response={"error": "channel_not_found"}) df = slack_handler.fetch_messages("fake-token", "invalid") assert df.empty @patch('connectors.slack_handler.WebClient') def test_fetch_messages_http_error(mock_webclient, slack_handler): mock_webclient.side_effect = Exception("Some connection error") df = slack_handler.fetch_messages("fake-token", "C123") assert df.empty