Files
Solo_bot/tests/test_scheduled_broadcasts_resolution.py
T
2026-04-14 07:19:14 +00:00

69 lines
2.6 KiB
Python

import unittest
from types import SimpleNamespace
from unittest.mock import AsyncMock, Mock, patch
from database.scheduled_broadcasts import create_scheduled_broadcast, list_scheduled_broadcasts
class ScheduledBroadcastResolutionTests(unittest.IsolatedAsyncioTestCase):
async def test_create_scheduled_broadcast_resolves_user_and_mirror_tg(self):
session = SimpleNamespace(add=Mock(), commit=AsyncMock(), refresh=AsyncMock())
creator = SimpleNamespace(id=10, tg_id=555)
with patch("database.scheduled_broadcasts.resolve_user_optional", new=AsyncMock(return_value=creator)):
broadcast = await create_scheduled_broadcast(
session=session,
created_by_tg_id=999,
send_to="all",
cluster_name=None,
text="hello",
photo=None,
keyboard_json=None,
scheduled_for=SimpleNamespace(),
workers=5,
messages_per_second=20,
)
self.assertEqual(broadcast.created_by_user_id, 10)
self.assertEqual(broadcast.created_by_tg_id, 555)
session.commit.assert_awaited_once()
session.refresh.assert_awaited_once_with(broadcast)
async def test_create_scheduled_broadcast_keeps_legacy_tg_when_user_missing(self):
session = SimpleNamespace(add=Mock(), commit=AsyncMock(), refresh=AsyncMock())
with patch("database.scheduled_broadcasts.resolve_user_optional", new=AsyncMock(return_value=None)):
broadcast = await create_scheduled_broadcast(
session=session,
created_by_tg_id=123456,
send_to="all",
cluster_name=None,
text="hello",
photo=None,
keyboard_json=None,
scheduled_for=SimpleNamespace(),
workers=5,
messages_per_second=20,
)
self.assertIsNone(broadcast.created_by_user_id)
self.assertEqual(broadcast.created_by_tg_id, 123456)
async def test_list_scheduled_broadcasts_filters_by_created_by_tg(self):
rows = [SimpleNamespace(id="a"), SimpleNamespace(id="b")]
session = SimpleNamespace(
execute=AsyncMock(return_value=SimpleNamespace(scalars=lambda: SimpleNamespace(all=lambda: rows)))
)
result = await list_scheduled_broadcasts(
session=session,
statuses=None,
created_by_tg_id=777,
limit=10,
offset=0,
)
self.assertEqual(result, rows)
session.execute.assert_awaited_once()