|
| 1 | +"""Tests for backend module imports and fallbacks.""" |
| 2 | + |
| 3 | + |
| 4 | +class TestBackendImports: |
| 5 | + """Tests for backend module import behavior.""" |
| 6 | + |
| 7 | + def test_discord_module_imports(self): |
| 8 | + """Test that discord module exports expected symbols.""" |
| 9 | + from csp_bot.backends import discord |
| 10 | + |
| 11 | + # These should always be available |
| 12 | + assert hasattr(discord, "DiscordAdapterConfig") |
| 13 | + assert hasattr(discord, "DiscordAdapterManager") |
| 14 | + assert hasattr(discord, "DiscordMessage") |
| 15 | + assert hasattr(discord, "mention_user_discord") |
| 16 | + |
| 17 | + # Check __all__ exports |
| 18 | + assert "DiscordAdapterConfig" in discord.__all__ |
| 19 | + assert "DiscordAdapterManager" in discord.__all__ |
| 20 | + assert "DiscordMessage" in discord.__all__ |
| 21 | + assert "mention_user_discord" in discord.__all__ |
| 22 | + |
| 23 | + def test_slack_module_imports(self): |
| 24 | + """Test that slack module exports expected symbols.""" |
| 25 | + from csp_bot.backends import slack |
| 26 | + |
| 27 | + # These should always be available |
| 28 | + assert hasattr(slack, "SlackAdapterConfig") |
| 29 | + assert hasattr(slack, "SlackAdapterManager") |
| 30 | + assert hasattr(slack, "SlackMessage") |
| 31 | + assert hasattr(slack, "mention_user_slack") |
| 32 | + |
| 33 | + # Check __all__ exports |
| 34 | + assert "SlackAdapterConfig" in slack.__all__ |
| 35 | + assert "SlackAdapterManager" in slack.__all__ |
| 36 | + assert "SlackMessage" in slack.__all__ |
| 37 | + assert "mention_user_slack" in slack.__all__ |
| 38 | + |
| 39 | + def test_symphony_module_imports(self): |
| 40 | + """Test that symphony module exports expected symbols.""" |
| 41 | + from csp_bot.backends import symphony |
| 42 | + |
| 43 | + # These should always be available |
| 44 | + assert hasattr(symphony, "SymphonyAdapterConfig") |
| 45 | + assert hasattr(symphony, "SymphonyAdapter") |
| 46 | + assert hasattr(symphony, "SymphonyMessage") |
| 47 | + assert hasattr(symphony, "Presence") |
| 48 | + assert hasattr(symphony, "mention_user_symphony") |
| 49 | + |
| 50 | + # Check __all__ exports |
| 51 | + assert "SymphonyAdapterConfig" in symphony.__all__ |
| 52 | + assert "SymphonyAdapter" in symphony.__all__ |
| 53 | + assert "SymphonyMessage" in symphony.__all__ |
| 54 | + assert "Presence" in symphony.__all__ |
| 55 | + assert "mention_user_symphony" in symphony.__all__ |
| 56 | + |
| 57 | + def test_backends_package_imports(self): |
| 58 | + """Test that backends package exports all modules.""" |
| 59 | + from csp_bot import backends |
| 60 | + |
| 61 | + # Check that we can import from the package |
| 62 | + assert hasattr(backends, "DiscordAdapterManager") |
| 63 | + assert hasattr(backends, "SlackAdapterManager") |
| 64 | + assert hasattr(backends, "SymphonyAdapter") |
| 65 | + |
| 66 | + assert hasattr(backends, "DiscordMessage") |
| 67 | + assert hasattr(backends, "SlackMessage") |
| 68 | + assert hasattr(backends, "SymphonyMessage") |
| 69 | + |
| 70 | + |
| 71 | +class TestDiscordMessageStruct: |
| 72 | + """Tests for DiscordMessage structure.""" |
| 73 | + |
| 74 | + def test_discord_message_fields(self): |
| 75 | + """Test DiscordMessage has expected fields.""" |
| 76 | + from csp_bot.backends.discord import DiscordMessage |
| 77 | + |
| 78 | + # Create a message to verify fields work |
| 79 | + msg = DiscordMessage( |
| 80 | + user="testuser", |
| 81 | + user_email="test@example.com", |
| 82 | + user_id="123456789012345678", |
| 83 | + tags=["111111111111111111"], |
| 84 | + channel="general", |
| 85 | + channel_id="222222222222222222", |
| 86 | + channel_type="public", |
| 87 | + msg="Hello world!", |
| 88 | + reaction="", |
| 89 | + thread="", |
| 90 | + ) |
| 91 | + |
| 92 | + assert msg.user == "testuser" |
| 93 | + assert msg.user_email == "test@example.com" |
| 94 | + assert msg.user_id == "123456789012345678" |
| 95 | + assert msg.tags == ["111111111111111111"] |
| 96 | + assert msg.channel == "general" |
| 97 | + assert msg.channel_id == "222222222222222222" |
| 98 | + assert msg.msg == "Hello world!" |
| 99 | + |
| 100 | + |
| 101 | +class TestSlackMessageStruct: |
| 102 | + """Tests for SlackMessage structure.""" |
| 103 | + |
| 104 | + def test_slack_message_fields(self): |
| 105 | + """Test SlackMessage has expected fields.""" |
| 106 | + from csp_bot.backends.slack import SlackMessage |
| 107 | + |
| 108 | + # Create a message to verify fields work |
| 109 | + msg = SlackMessage( |
| 110 | + user="testuser", |
| 111 | + user_email="test@example.com", |
| 112 | + user_id="U123456789", |
| 113 | + tags=["U987654321"], |
| 114 | + channel="general", |
| 115 | + channel_id="C123456789", |
| 116 | + channel_type="public", |
| 117 | + msg="Hello <@U987654321>!", |
| 118 | + reaction="", |
| 119 | + thread="", |
| 120 | + payload={}, |
| 121 | + ) |
| 122 | + |
| 123 | + assert msg.user == "testuser" |
| 124 | + assert msg.user_email == "test@example.com" |
| 125 | + assert msg.user_id == "U123456789" |
| 126 | + assert msg.tags == ["U987654321"] |
| 127 | + assert msg.channel == "general" |
| 128 | + assert msg.channel_id == "C123456789" |
| 129 | + assert msg.msg == "Hello <@U987654321>!" |
| 130 | + |
| 131 | + |
| 132 | +class TestSymphonyMessageStruct: |
| 133 | + """Tests for SymphonyMessage structure.""" |
| 134 | + |
| 135 | + def test_symphony_message_fields(self): |
| 136 | + """Test SymphonyMessage has expected fields.""" |
| 137 | + from csp_bot.backends.symphony import SymphonyMessage |
| 138 | + |
| 139 | + # Create a message to verify fields work |
| 140 | + msg = SymphonyMessage( |
| 141 | + user="John Doe", |
| 142 | + user_email="john@example.com", |
| 143 | + user_id="123456789", |
| 144 | + tags=["987654321"], |
| 145 | + room="Test Room", |
| 146 | + msg="Hello world!", |
| 147 | + form_id="", |
| 148 | + form_values={}, |
| 149 | + ) |
| 150 | + |
| 151 | + assert msg.user == "John Doe" |
| 152 | + assert msg.user_email == "john@example.com" |
| 153 | + assert msg.user_id == "123456789" |
| 154 | + assert msg.tags == ["987654321"] |
| 155 | + assert msg.room == "Test Room" |
| 156 | + assert msg.msg == "Hello world!" |
| 157 | + |
| 158 | + |
| 159 | +class TestMentionFunctions: |
| 160 | + """Tests for mention helper functions.""" |
| 161 | + |
| 162 | + def test_mention_user_discord_available(self): |
| 163 | + """Test mention_user_discord function availability.""" |
| 164 | + |
| 165 | + # Function should exist (may be None if adapter not installed) |
| 166 | + # Just verify it's exported |
| 167 | + assert "mention_user_discord" in dir(__import__("csp_bot.backends.discord", fromlist=["mention_user_discord"])) |
| 168 | + |
| 169 | + def test_mention_user_slack_available(self): |
| 170 | + """Test mention_user_slack function availability.""" |
| 171 | + |
| 172 | + assert "mention_user_slack" in dir(__import__("csp_bot.backends.slack", fromlist=["mention_user_slack"])) |
| 173 | + |
| 174 | + def test_mention_user_symphony_available(self): |
| 175 | + """Test mention_user_symphony function availability.""" |
| 176 | + |
| 177 | + assert "mention_user_symphony" in dir(__import__("csp_bot.backends.symphony", fromlist=["mention_user_symphony"])) |
0 commit comments