test_thread_postlikes_api.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from django.core.urlresolvers import reverse
  2. from .. import testutils
  3. from ..serializers import PostLikeSerializer
  4. from .test_threads_api import ThreadsApiTestCase
  5. class ThreadPostLikesApiTestCase(ThreadsApiTestCase):
  6. def setUp(self):
  7. super(ThreadPostLikesApiTestCase, self).setUp()
  8. self.post = testutils.reply_thread(self.thread, poster=self.user)
  9. self.api_link = reverse('misago:api:thread-post-likes', kwargs={
  10. 'thread_pk': self.thread.pk,
  11. 'pk': self.post.pk
  12. })
  13. def test_no_permission(self):
  14. """api errors if user has no permission to see likes"""
  15. self.override_acl({
  16. 'can_see_posts_likes': 0
  17. })
  18. response = self.client.get(self.api_link)
  19. self.assertContains(response, "You can't see who liked this post.", status_code=403)
  20. def test_no_permission_to_list(self):
  21. """api errors if user has no permission to see likes, but can see likes count"""
  22. self.override_acl({
  23. 'can_see_posts_likes': 1
  24. })
  25. response = self.client.get(self.api_link)
  26. self.assertContains(response, "You can't see who liked this post.", status_code=403)
  27. def test_no_likes(self):
  28. """api returns empty list if post has no likes"""
  29. response = self.client.get(self.api_link)
  30. self.assertEqual(response.status_code, 200)
  31. self.assertEqual(response.json(), [])
  32. def test_likes(self):
  33. """api returns list of likes"""
  34. like = testutils.like_post(self.user, self.post)
  35. other_like = testutils.like_post(self.user, self.post)
  36. other_like.user = None
  37. other_like.save()
  38. response = self.client.get(self.api_link)
  39. self.assertEqual(response.status_code, 200)
  40. self.assertEqual(response.json(), [
  41. PostLikeSerializer(other_like.__dict__).data,
  42. PostLikeSerializer(like.__dict__).data,
  43. ])