Files
core/tests/test_notification_fix.py
Untone d38c1485e4
Some checks failed
Deploy on push / deploy (push) Failing after 3m5s
shout-create-fix
2025-08-23 10:58:09 +03:00

79 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Тест для проверки исправления проблемы с полем kind в уведомлениях.
"""
import pytest
from unittest.mock import patch, MagicMock
from services.notify import save_notification
from orm.notification import NotificationAction
def test_save_notification_with_create_action():
"""Тест создания уведомления с действием create для shout"""
with patch('services.notify.local_session') as mock_session:
mock_session_instance = MagicMock()
mock_session.return_value.__enter__.return_value = mock_session_instance
# Тестируем с действием create для shout
save_notification("create", "shout", {"id": 1})
# Проверяем, что уведомление создано с правильным kind
mock_session_instance.add.assert_called_once()
notification = mock_session_instance.add.call_args[0][0]
assert notification.kind == NotificationAction.CREATE
assert notification.action == "create"
assert notification.entity == "shout"
def test_save_notification_with_update_action():
"""Тест создания уведомления с действием update"""
with patch('services.notify.local_session') as mock_session:
mock_session_instance = MagicMock()
mock_session.return_value.__enter__.return_value = mock_session_instance
# Тестируем с действием update
save_notification("update", "shout", {"id": 1})
# Проверяем, что уведомление создано с правильным kind
mock_session_instance.add.assert_called_once()
notification = mock_session_instance.add.call_args[0][0]
assert notification.kind == NotificationAction.UPDATE
assert notification.action == "update"
assert notification.entity == "shout"
def test_save_notification_with_invalid_action():
"""Тест создания уведомления с невалидным действием (fallback)"""
with patch('services.notify.local_session') as mock_session:
mock_session_instance = MagicMock()
mock_session.return_value.__enter__.return_value = mock_session_instance
# Тестируем с невалидным действием
save_notification("invalid_action", "shout", {"id": 1})
# Проверяем, что уведомление создано с fallback значением
mock_session_instance.add.assert_called_once()
notification = mock_session_instance.add.call_args[0][0]
assert notification.kind == "invalid_action" # fallback
assert notification.action == "invalid_action"
assert notification.entity == "shout"
def test_save_notification_with_none_payload():
"""Тест создания уведомления с None payload (должно вернуться без создания)"""
with patch('services.notify.local_session') as mock_session:
mock_session_instance = MagicMock()
mock_session.return_value.__enter__.return_value = mock_session_instance
# Тестируем с None payload
save_notification("create", "shout", None)
# Проверяем, что уведомление не создавалось
mock_session_instance.add.assert_not_called()
mock_session_instance.commit.assert_not_called()
if __name__ == "__main__":
pytest.main([__file__])