Skip to content

Commit

Permalink
feat: allow course entitlements REST API to be filtered on course_uuid
Browse files Browse the repository at this point in the history
asd
  • Loading branch information
christopappas committed May 24, 2023
1 parent 7b91f85 commit ec788e6
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
3 changes: 2 additions & 1 deletion common/djangoapps/entitlements/rest_api/v1/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ class CourseEntitlementFilter(filters.FilterSet):

uuid = UUIDListFilter()
user = filters.CharFilter(field_name='user__username')
course_uuid = UUIDListFilter(field_name='course_uuid')

class Meta:
model = CourseEntitlement
fields = ('uuid', 'user')
fields = ('uuid', 'user', 'course_uuid')
28 changes: 28 additions & 0 deletions common/djangoapps/entitlements/rest_api/v1/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,34 @@ def test_get_expired_entitlement_by_uuid(self):
results = response.data
assert results.get('expired_at')

def test_entitlements_filter_on_course_uuid(self):
"""
Verify that courses filtered properly on list of course_uuids.
"""
entitlements = CourseEntitlementFactory.create_batch(5, user=self.user)
course_uuids_to_filter_on = {
str(entitlement.course_uuid)
for entitlement in entitlements[0:3]
}
# Create a 2nd entitlement for one of the ones to filter on
CourseEntitlementFactory.create(user=self.user, course_uuid=str(entitlements[0].course_uuid))

url = reverse('entitlements_api:v1:entitlements-list')
url += f'?user={self.user.username}'
url += f'&course_uuid={",".join(course_uuids_to_filter_on)}'

response = self.client.get(
url,
content_type='application/json',
)
assert response.status_code == 200

results = response.data
assert results['count'] == 4
actual_course_uuids = {entitlement['course_uuid'] for entitlement in results['results']}
assert actual_course_uuids == course_uuids_to_filter_on
assert len(actual_course_uuids) == 3

def test_delete_and_revoke_entitlement(self):
course_entitlement = CourseEntitlementFactory.create()
url = reverse(self.ENTITLEMENTS_DETAILS_PATH, args=[str(course_entitlement.uuid)])
Expand Down

0 comments on commit ec788e6

Please sign in to comment.