mirror of
https://github.com/langgenius/dify.git
synced 2026-09-03 06:45:14 +08:00
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: hjlarry <hjlarry@163.com>
78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
from inspect import unwrap
|
|
from types import SimpleNamespace
|
|
from unittest.mock import Mock, patch
|
|
|
|
from controllers.console.notification import (
|
|
DismissNotificationPayload,
|
|
NotificationApi,
|
|
NotificationDismissApi,
|
|
)
|
|
from machinery.context import RequestContext
|
|
from services.entities.notification_entities import NotificationItem, NotificationResult
|
|
|
|
|
|
def _request_context() -> RequestContext:
|
|
return RequestContext(
|
|
request_id="request-1",
|
|
trace_id="trace-1",
|
|
account_id="account-1",
|
|
active_workspace_id="workspace-1",
|
|
)
|
|
|
|
|
|
def test_get_notification_delegates_and_serializes_result() -> None:
|
|
service = Mock()
|
|
service.get_active.return_value = NotificationResult(
|
|
should_show=True,
|
|
notifications=(
|
|
NotificationItem(
|
|
notification_id="notification-1",
|
|
frequency="once",
|
|
lang="en-US",
|
|
title="Title",
|
|
subtitle="Subtitle",
|
|
body="Body",
|
|
title_pic_url="https://example.com/title.png",
|
|
),
|
|
),
|
|
)
|
|
services = SimpleNamespace(notifications=service)
|
|
api = NotificationApi()
|
|
method = unwrap(api.get)
|
|
context = _request_context()
|
|
|
|
with patch("controllers.console.notification.application_services", return_value=services):
|
|
result, status = method(api, context)
|
|
|
|
assert status == 200
|
|
assert result == {
|
|
"should_show": True,
|
|
"notifications": [
|
|
{
|
|
"notification_id": "notification-1",
|
|
"frequency": "once",
|
|
"lang": "en-US",
|
|
"title": "Title",
|
|
"subtitle": "Subtitle",
|
|
"body": "Body",
|
|
"title_pic_url": "https://example.com/title.png",
|
|
}
|
|
],
|
|
}
|
|
service.get_active.assert_called_once_with(context)
|
|
|
|
|
|
def test_dismiss_notification_delegates_with_stable_account_context() -> None:
|
|
service = Mock()
|
|
services = SimpleNamespace(notifications=service)
|
|
api = NotificationDismissApi()
|
|
method = unwrap(api.post)
|
|
context = _request_context()
|
|
|
|
with patch("controllers.console.notification.application_services", return_value=services):
|
|
result, status = method(api, DismissNotificationPayload(notification_id="notification-1"), context)
|
|
|
|
assert status == 200
|
|
assert result == {"result": "success"}
|
|
service.dismiss.assert_called_once_with(context, "notification-1")
|