diff --git a/lms/djangoapps/instructor/tests/views/test_api_v2.py b/lms/djangoapps/instructor/tests/views/test_api_v2.py index 8b6fc465d7ea..4a4fc5df757f 100644 --- a/lms/djangoapps/instructor/tests/views/test_api_v2.py +++ b/lms/djangoapps/instructor/tests/views/test_api_v2.py @@ -8,7 +8,7 @@ from rest_framework import status from rest_framework.test import APIClient -from common.djangoapps.student.tests.factories import InstructorFactory, UserFactory +from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, InstructorFactory, UserFactory from lms.djangoapps.courseware.models import StudentModule from lms.djangoapps.instructor_task.models import InstructorTask from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase @@ -46,12 +46,30 @@ def test_get_learner_by_username(self): 'student_id': self.student.id, }) - self.assertEqual(response.status_code, status.HTTP_200_OK) # noqa: PT009 + assert response.status_code == status.HTTP_200_OK data = response.json() - self.assertEqual(data['username'], 'john_harvard') # noqa: PT009 - self.assertEqual(data['email'], 'john@example.com') # noqa: PT009 - self.assertEqual(data['full_name'], 'John Harvard') # noqa: PT009 - self.assertEqual(data['progress_url'], expected_progress_url) # noqa: PT009 + assert data['username'] == 'john_harvard' + assert data['email'] == 'john@example.com' + assert data['full_name'] == 'John Harvard' + assert data['progress_url'] == expected_progress_url + assert not data['is_enrolled'] + + def test_get_learner_by_username_enrolled(self): + """Test that is_enrolled is true for users enrolled in the course""" + CourseEnrollmentFactory( + is_active=True, + course_id=self.course.id, + user=self.student + ) + url = reverse('instructor_api_v2:learner_detail', kwargs={ + 'course_id': str(self.course.id), + 'email_or_username': self.student.username + }) + response = self.client.get(url) + + assert response.status_code == status.HTTP_200_OK + data = response.json() + assert data['is_enrolled'] def test_get_learner_by_email(self): """Test retrieving learner info by email""" diff --git a/lms/djangoapps/instructor/views/api_v2.py b/lms/djangoapps/instructor/views/api_v2.py index 19927e2449bc..a6fbf8b04608 100644 --- a/lms/djangoapps/instructor/views/api_v2.py +++ b/lms/djangoapps/instructor/views/api_v2.py @@ -1684,7 +1684,8 @@ class LearnerView(DeveloperErrorViewMixin, APIView): "username": "john_harvard", "email": "john@example.com", "full_name": "John Harvard", - "progress_url": "https://example.com/courses/course-v1:edX+DemoX+Demo_Course/progress/john_harvard/" + "progress_url": "https://example.com/courses/course-v1:edX+DemoX+Demo_Course/progress/42/", + "is_enrolled": true } ``` """ @@ -1754,6 +1755,7 @@ def get(self, request, course_id, email_or_username): 'email': student.email, 'full_name': student.profile.name, 'progress_url': progress_url, + 'is_enrolled': CourseEnrollment.is_enrolled(student, course_key), } serializer = LearnerSerializer(learner_data) diff --git a/lms/djangoapps/instructor/views/serializers_v2.py b/lms/djangoapps/instructor/views/serializers_v2.py index b163869b4fc9..a173b3764a45 100644 --- a/lms/djangoapps/instructor/views/serializers_v2.py +++ b/lms/djangoapps/instructor/views/serializers_v2.py @@ -761,6 +761,9 @@ class LearnerSerializer(serializers.Serializer): required=False, help_text="URL to learner's progress page" ) + is_enrolled = serializers.BooleanField( + help_text="Whether the learner has an active enrollment in the course" + ) class GraderSerializer(serializers.Serializer):