All checks were successful
Deploy production / deploy (push) Successful in 12m7s
61 lines
2.3 KiB
Python
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
|