shout-create-fix
Some checks failed
Deploy on push / deploy (push) Failing after 3m5s

This commit is contained in:
2025-08-23 10:56:26 +03:00
parent b4f683a7cc
commit d38c1485e4
4 changed files with 92 additions and 4 deletions

View File

@@ -0,0 +1,78 @@
"""
Тест для проверки исправления проблемы с полем 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__])