disco-reaper/tests/test_utils.py
2026-03-30 16:28:59 +05:30

60 lines
2.6 KiB
Python

import pytest
from unittest.mock import MagicMock
from src.core.utils import parse_snowflake, resolve_discord_links
def test_parse_snowflake_valid():
assert parse_snowflake("12345") == 12345
assert parse_snowflake(12345) == 12345
assert parse_snowflake(" 67890 ") == 67890
def test_parse_snowflake_invalid():
assert parse_snowflake(None) is None
assert parse_snowflake("") is None
assert parse_snowflake("none") is None
assert parse_snowflake("NULL") is None
assert parse_snowflake("not_a_number") is None
def test_resolve_discord_links_no_content():
assert resolve_discord_links("", None, "fluxer", "target_id") == ""
assert resolve_discord_links(None, None, "fluxer", "target_id") is None
def test_resolve_discord_links_no_mapping():
mock_state = MagicMock()
mock_state.get_target_channel_id.return_value = None
mock_state.get_target_category_id.return_value = None
mock_state.find_message_mapping.return_value = (None, None)
content = "Check this: https://discord.com/channels/1/2/3"
resolved = resolve_discord_links(content, mock_state, "fluxer", "target_server")
assert "[`discord-message`](<https://discord.com/channels/1/2/3>)" in resolved
def test_resolve_discord_links_channel_mapping():
mock_state = MagicMock()
mock_state.get_target_channel_id.return_value = "target_chan_456"
mock_state.find_message_mapping.return_value = (None, None)
content = "Go to https://discord.com/channels/123/456"
# Test Fluxer
resolved_fluxer = resolve_discord_links(content, mock_state, "fluxer", "target_server")
assert "https://fluxer.app/channels/target_server/target_chan_456" in resolved_fluxer
# Test Stoat
resolved_stoat = resolve_discord_links(content, mock_state, "stoat", "target_server")
assert "https://stoat.chat/server/target_server/channel/target_chan_456" in resolved_stoat
def test_resolve_discord_links_message_mapping():
mock_state = MagicMock()
mock_state.find_message_mapping.return_value = ("target_chan_456", "target_msg_789")
content = "Look at this: https://discord.com/channels/123/456/789"
# Test Fluxer
resolved_fluxer = resolve_discord_links(content, mock_state, "fluxer", "target_server")
assert "https://fluxer.app/channels/target_server/target_chan_456/target_msg_789" in resolved_fluxer
def test_resolve_discord_links_skips_wrapped():
mock_state = MagicMock()
content = "Already wrapped: [link](https://discord.com/channels/1/2/3)"
resolved = resolve_discord_links(content, mock_state, "fluxer", "target_server")
assert resolved == content