From 69efe48e09b731c141f7ebe6499f1fa1d8b9ae40 Mon Sep 17 00:00:00 2001 From: Ahtisham Shahid Date: Wed, 17 Aug 2022 13:39:22 +0500 Subject: [PATCH] fix: Made user search function case in-sensitive (#30867) --- .../discussion/rest_api/tests/test_views.py | 15 +++++++++++++++ lms/djangoapps/discussion/rest_api/utils.py | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/discussion/rest_api/tests/test_views.py b/lms/djangoapps/discussion/rest_api/tests/test_views.py index 34896b5932..a6ceef848b 100644 --- a/lms/djangoapps/discussion/rest_api/tests/test_views.py +++ b/lms/djangoapps/discussion/rest_api/tests/test_views.py @@ -22,6 +22,7 @@ from rest_framework.parsers import JSONParser from rest_framework.test import APIClient, APITestCase from lms.djangoapps.discussion.config.waffle import ENABLE_LEARNERS_STATS +from lms.djangoapps.discussion.rest_api.utils import get_usernames_from_search_string from xmodule.modulestore import ModuleStoreEnum from xmodule.modulestore.django import modulestore from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase @@ -3021,3 +3022,17 @@ class CourseActivityStatsTest(ForumsEnableMixin, UrlResetMixin, CommentsServiceM data = response.json() self.assertFalse(data['results']) assert data['pagination']['count'] == 0 + + @ddt.data( + 'user-0', + 'USER-1', + 'User-2', + 'UsEr-3' + ) + @mock.patch.dict("django.conf.settings.FEATURES", {'ENABLE_DISCUSSION_SERVICE': True}) + def test_with_username_param_case(self, username_search_string): + """ + Test user search function is case-insensitive. + """ + response = get_usernames_from_search_string(self.course_key, username_search_string, 1, 1) + assert response == (username_search_string.lower(), 1, 1) diff --git a/lms/djangoapps/discussion/rest_api/utils.py b/lms/djangoapps/discussion/rest_api/utils.py index 8f9b8c48e6..8163f1e965 100644 --- a/lms/djangoapps/discussion/rest_api/utils.py +++ b/lms/djangoapps/discussion/rest_api/utils.py @@ -59,7 +59,7 @@ def get_usernames_from_search_string(course_id, search_string, page_number, page """ matched_users_in_course = User.objects.filter( courseenrollment__course_id=course_id, - username__contains=search_string).order_by(Length('username').asc()).values_list('username', flat=True) + username__icontains=search_string).order_by(Length('username').asc()).values_list('username', flat=True) if not matched_users_in_course: return '', 0, 0 matched_users_count = len(matched_users_in_course)