7455d7e426
130 issues auto-fixed (import ordering, UP045/UP006 type annotations), 33 issues manually fixed (E712/E501/E402/E722 + N818 rename + per-file wechat ignore for N8xx naming conventions). All 33 tests pass.
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from unittest.mock import AsyncMock, patch
|
|
|
|
import pytest
|
|
|
|
from app.services.notification_service import NotificationService
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_notification_send():
|
|
svc = NotificationService()
|
|
announcements = [
|
|
{
|
|
"title": "测试公告",
|
|
"publish_date": None,
|
|
"purchase_name": "测试单位",
|
|
"content_url": "https://x.com/1",
|
|
"source_code": "test",
|
|
"source_name": "测试来源",
|
|
"announcement_type": "purchase",
|
|
}
|
|
]
|
|
|
|
with patch.object(svc.client, "send_textcard", AsyncMock(return_value=True)):
|
|
count = await svc.send(announcements)
|
|
assert count == 1
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_notification_send_empty():
|
|
svc = NotificationService()
|
|
count = await svc.send([])
|
|
assert count == 0
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_notification_send_disabled():
|
|
svc = NotificationService()
|
|
announcements = [{"title": "test"}]
|
|
|
|
with patch.object(svc.client, "send_textcard", AsyncMock(return_value=False)):
|
|
count = await svc.send(announcements)
|
|
assert count == 0
|