Skip to content

Commit

Permalink
fix: new discussion post should only be grouped if old notification i…
Browse files Browse the repository at this point in the history
…s not seen (#36032)
  • Loading branch information
muhammadadeeltajamul authored Dec 24, 2024
1 parent bfcaa13 commit 81f825f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,8 @@ def get_user_existing_notifications(user_ids, notification_type, group_by_id, co
user__in=user_ids,
notification_type=notification_type,
group_by_id=group_by_id,
course_id=course_id
course_id=course_id,
last_seen__isnull=True,
)
notifications_mapping = {user_id: [] for user_id in user_ids}
for notification in notifications:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
Tests for notification grouping module
"""

import ddt
import unittest
from unittest.mock import MagicMock, patch
from datetime import datetime
from pytz import utc

from common.djangoapps.student.tests.factories import UserFactory
from openedx.core.djangoapps.notifications.grouping_notifications import (
BaseNotificationGrouper,
NotificationRegistry,
Expand All @@ -15,6 +17,8 @@
get_user_existing_notifications, NewPostGrouper
)
from openedx.core.djangoapps.notifications.models import Notification
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory


class TestNotificationRegistry(unittest.TestCase):
Expand Down Expand Up @@ -143,7 +147,8 @@ def test_new_post_with_same_user(self):
self.assertFalse(updated_context.get('grouped', False))


class TestGroupUserNotifications(unittest.TestCase):
@ddt.ddt
class TestGroupUserNotifications(ModuleStoreTestCase):
"""
Tests for the group_user_notifications function
"""
Expand Down Expand Up @@ -179,6 +184,36 @@ def test_group_user_notifications_no_grouper(self):

self.assertFalse(old_notification.save.called)

@ddt.data(datetime(2023, 1, 1, tzinfo=utc), None)
def test_not_grouped_when_notification_is_seen(self, last_seen):
"""
Notification is not grouped if the notification is marked as seen
"""
course = CourseFactory()
user = UserFactory()
notification_params = {
'app_name': 'discussion',
'notification_type': 'new_discussion_post',
'course_id': course.id,
'group_by_id': course.id,
'content_url': 'http://example.com',
'user': user,
'last_seen': last_seen,
}
Notification.objects.create(content_context={
'username': 'User1',
'post_title': ' Post title',
'replier_name': 'User 1',

}, **notification_params)
existing_notifications = get_user_existing_notifications(
[user.id], 'new_discussion_post', course.id, course.id
)
if last_seen is None:
assert existing_notifications[user.id] is not None
else:
assert existing_notifications[user.id] is None


class TestGetUserExistingNotifications(unittest.TestCase):
"""
Expand Down

0 comments on commit 81f825f

Please sign in to comment.