diff --git a/cms/djangoapps/contentstore/rest_api/v2/views/tests/test_home.py b/cms/djangoapps/contentstore/rest_api/v2/views/tests/test_home.py index 453f69ae4225..0c3023a60a95 100644 --- a/cms/djangoapps/contentstore/rest_api/v2/views/tests/test_home.py +++ b/cms/djangoapps/contentstore/rest_api/v2/views/tests/test_home.py @@ -190,6 +190,22 @@ def test_search_query_if_passed(self): ])]) self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_search_query_matches_display_number(self): + """Search must match course display number values.""" + course_key = self.store.make_course_key("search-org", "opaque-number", "run") + searchable_course = CourseOverviewFactory.create( + id=course_key, + org=course_key.org, + display_name="Unrelated Title", + display_number_with_default="Friendly Number 42", + ) + + response = self.client.get(self.api_v2_url, {"search": "Friendly Number"}) + + assert response.status_code == status.HTTP_200_OK + assert len(response.data["results"]["courses"]) == 1 + assert response.data["results"]["courses"][0]["course_key"] == str(searchable_course.id) + def test_order_query_if_passed(self): """Get list of courses when order filter passed as a query param. diff --git a/openedx/core/djangoapps/content/course_overviews/models.py b/openedx/core/djangoapps/content/course_overviews/models.py index c5b453f82e6c..7edaa4ebf28a 100644 --- a/openedx/core/djangoapps/content/course_overviews/models.py +++ b/openedx/core/djangoapps/content/course_overviews/models.py @@ -721,6 +721,7 @@ def get_courses_matching_query(cls, query, course_overviews): """ return course_overviews.filter( Q(display_name__icontains=query) | + Q(display_number_with_default__icontains=query) | Q(org__icontains=query) | Q(id__icontains=query) )