From dc90736b5b82a8cb3856f596d8ebaf6ddaba472f Mon Sep 17 00:00:00 2001 From: Greg Price Date: Thu, 25 Jul 2013 14:19:29 -0400 Subject: [PATCH] Allow user id filtering in user preference API --- lms/djangoapps/user_api/tests/test_views.py | 20 ++++++++++++++++++++ lms/djangoapps/user_api/views.py | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/user_api/tests/test_views.py b/lms/djangoapps/user_api/tests/test_views.py index a018eadf15..1e8e6f8074 100644 --- a/lms/djangoapps/user_api/tests/test_views.py +++ b/lms/djangoapps/user_api/tests/test_views.py @@ -262,6 +262,26 @@ class UserPreferenceViewSetTest(UserApiTestCase): self.assertPrefIsValid(pref) self.assertEqual(pref["key"], "key0") + def test_get_list_filter_user_empty(self): + def test_id(user_id): + result = self.get_json(self.LIST_URI, data={"user": user_id}) + self.assertEqual(result["count"], 0) + self.assertEqual(result["results"], []) + test_id(self.users[2].id) + # TODO: If the given id does not match a user, then the filter is a no-op + # test_id(42) + # test_id("asdf") + + def test_get_list_filter_user_nonempty(self): + user_id = self.users[0].id + result = self.get_json(self.LIST_URI, data={"user": user_id}) + self.assertEqual(result["count"], 2) + prefs = result["results"] + self.assertEqual(len(prefs), 2) + for pref in prefs: + self.assertPrefIsValid(pref) + self.assertEqual(pref["user"]["id"], user_id) + def test_get_list_pagination(self): first_page = self.get_json(self.LIST_URI, data={"page_size": 2}) self.assertEqual(first_page["count"], 3) diff --git a/lms/djangoapps/user_api/views.py b/lms/djangoapps/user_api/views.py index 502f633ab3..d4f19be099 100644 --- a/lms/djangoapps/user_api/views.py +++ b/lms/djangoapps/user_api/views.py @@ -36,7 +36,7 @@ class UserPreferenceViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = (ApiKeyHeaderPermission,) queryset = UserPreference.objects.all() filter_backends = (filters.DjangoFilterBackend,) - filter_fields = ("key",) + filter_fields = ("key", "user") serializer_class = UserPreferenceSerializer paginate_by = 10 paginate_by_param = "page_size"