"""Tests for messaging platform factory.""" from unittest.mock import MagicMock, patch from messaging.platforms.factory import create_messaging_platform class TestCreateMessagingPlatform: """Tests for create_messaging_platform factory function.""" def test_telegram_with_token(self): """Create Telegram platform when bot_token is provided.""" mock_platform = MagicMock() with ( patch("messaging.platforms.telegram.TELEGRAM_AVAILABLE", True), patch( "messaging.platforms.telegram.TelegramPlatform", return_value=mock_platform, ), ): result = create_messaging_platform( "telegram", bot_token="test_token", allowed_user_id="12345", ) assert result is mock_platform def test_telegram_without_token(self): """Return None when no bot_token for Telegram.""" result = create_messaging_platform("telegram") assert result is None def test_telegram_empty_token(self): """Return None when bot_token is empty string.""" result = create_messaging_platform("telegram", bot_token="") assert result is None def test_discord_with_token(self): """Create Discord platform when discord_bot_token is provided.""" mock_platform = MagicMock() with ( patch("messaging.platforms.discord.DISCORD_AVAILABLE", True), patch( "messaging.platforms.discord.DiscordPlatform", return_value=mock_platform, ), ): result = create_messaging_platform( "discord", discord_bot_token="test_token", allowed_discord_channels="123,456", ) assert result is mock_platform def test_discord_without_token(self): """Return None when no discord_bot_token for Discord.""" result = create_messaging_platform("discord") assert result is None def test_discord_empty_token(self): """Return None when discord_bot_token is empty string.""" result = create_messaging_platform( "discord", discord_bot_token="", allowed_discord_channels="123" ) assert result is None def test_unknown_platform(self): """Return None for unknown platform types.""" result = create_messaging_platform("slack") assert result is None def test_unknown_platform_with_kwargs(self): """Return None for unknown platform even with kwargs.""" result = create_messaging_platform("slack", bot_token="token") assert result is None