diff --git a/cookbook/tests/api/test_api_userpreference.py b/cookbook/tests/api/test_api_userpreference.py index a35ef2db..f13ae274 100644 --- a/cookbook/tests/api/test_api_userpreference.py +++ b/cookbook/tests/api/test_api_userpreference.py @@ -12,18 +12,41 @@ class TestApiUserPreference(TestViews): def setUp(self): super(TestApiUserPreference, self).setUp() - def test_preference(self): - # can create own preference with default values - r = self.user_client_1.post(reverse('api:userpreference-list'), {}) + def test_preference_create(self): + r = self.user_client_1.post(reverse('api:userpreference-list')) self.assertEqual(r.status_code, 201) response = json.loads(r.content) self.assertEqual(response['user'], auth.get_user(self.user_client_1).id) self.assertEqual(response['theme'], UserPreference._meta.get_field('theme').get_default()) - # multi user test get user pref detail + def test_preference_list(self): + UserPreference.objects.create(user=auth.get_user(self.user_client_1)) + UserPreference.objects.create(user=auth.get_user(self.guest_client_1)) + + # users can only see own preference in list + r = self.user_client_1.get(reverse('api:userpreference-list')) + self.assertEqual(r.status_code, 200) + response = json.loads(r.content) + self.assertEqual(len(response), 1) + self.assertEqual(response[0]['user'], auth.get_user(self.user_client_1).id) + + # superusers can see all user prefs in list + r = self.superuser_client.get(reverse('api:userpreference-list')) + self.assertEqual(r.status_code, 200) + response = json.loads(r.content) + self.assertEqual(len(response), 2) + + def test_preference_retrieve(self): + UserPreference.objects.create(user=auth.get_user(self.user_client_1)) + UserPreference.objects.create(user=auth.get_user(self.guest_client_1)) + self.batch_requests([(self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 404), (self.anonymous_client, 403), (self.admin_client_1, 404), (self.superuser_client, 200)], reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + def test_preference_update(self): + UserPreference.objects.create(user=auth.get_user(self.user_client_1)) + UserPreference.objects.create(user=auth.get_user(self.guest_client_1)) + # can update users preference r = self.user_client_1.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.DARKLY}, content_type='application/json') response = json.loads(r.content) @@ -41,3 +64,23 @@ class TestApiUserPreference(TestViews): # can set pref as superuser r = self.superuser_client.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.FLATLY}, content_type='application/json') self.assertEqual(r.status_code, 200) + + def test_preference_delete(self): + UserPreference.objects.create(user=auth.get_user(self.user_client_1)) + + # can delete own preference + r = self.user_client_1.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + self.assertEqual(r.status_code, 204) + self.assertEqual(UserPreference.objects.count(), 0) + + UserPreference.objects.create(user=auth.get_user(self.user_client_1)) + + # cant delete other preference + r = self.user_client_2.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + self.assertEqual(r.status_code, 404) + self.assertEqual(UserPreference.objects.count(), 1) + + # superuser can delete everything + r = self.superuser_client.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + self.assertEqual(r.status_code, 204) + self.assertEqual(UserPreference.objects.count(), 0)