Corp/backend/tests/notifications/test_subscription_unread.py
Игорь Надеин 6860bdba15
All checks were successful
Deploy production / deploy (push) Successful in 12m7s
Track unread subscription notifications separately
2026-11-03 12:28:53 +03:00

61 lines
2.3 KiB
Python

import pytest
from notifications.cache import build_unread_summary
from notifications.models import Notification
from procurement.models import ProcurementRequest
from procurement.notifications.read_service import ProcurementNotificationReadService
@pytest.mark.django_db
def test_subscription_unread_count_and_read_isolation(user_factory, department_factory):
user = user_factory()
other_user = user_factory()
department = department_factory(name="Тестовый отдел")
standard = ProcurementRequest.objects.create(
title="Закупка", department=department, requestor=user
)
subscription = ProcurementRequest.objects.create(
title="Подписка",
department=department,
requestor=user,
request_type=ProcurementRequest.RequestType.SUBSCRIPTION,
)
Notification.objects.bulk_create(
[
Notification(
recipient=user,
verb="procurement_department_request",
data={"request_id": standard.id},
),
Notification(
recipient=user,
verb="procurement_pending_approval",
data={"request_id": subscription.id},
),
Notification(
recipient=user,
verb="procurement_department_request",
data={"request_id": str(subscription.id)},
),
Notification(
recipient=user,
verb="procurement_approved",
data={"request_id": subscription.id},
unread=False,
),
Notification(
recipient=other_user,
verb="procurement_approved",
data={"request_id": subscription.id},
),
]
)
assert build_unread_summary(user.id)["procurement_subscription_unread"] == 2
service = ProcurementNotificationReadService()
service.mark_request_notifications_as_read(user=user, procurement_request=standard)
assert build_unread_summary(user.id)["procurement_subscription_unread"] == 2
service.mark_request_notifications_as_read(
user=user, procurement_request=subscription
)
assert build_unread_summary(user.id)["procurement_subscription_unread"] == 0