def test_like_post_no_change(self): """api does no state change if we are linking liked post""" testutils.like_post(self.post, self.user) response = self.patch( self.api_link, [ { 'op': 'replace', 'path': 'is-liked', 'value': True, }, ] ) self.assertEqual(response.status_code, 200) response_json = response.json() self.assertEqual(response_json['likes'], 1) self.assertEqual(response_json['is_liked'], True) self.assertEqual( response_json['last_likes'], [ { 'id': self.user.id, 'username': self.user.username, }, ] ) post = Post.objects.get(pk=self.post.pk) self.assertEqual(post.likes, response_json['likes']) self.assertEqual(post.last_likes, response_json['last_likes'])
def test_like_post_no_change(self): """api does no state change if we are linking liked post""" testutils.like_post(self.post, self.user) response = self.patch(self.api_link, [ { 'op': 'replace', 'path': 'is-liked', 'value': True, }, ]) self.assertEqual(response.status_code, 200) response_json = response.json() self.assertEqual(response_json['likes'], 1) self.assertEqual(response_json['is_liked'], True) self.assertEqual(response_json['last_likes'], [ { 'id': self.user.id, 'username': self.user.username, }, ]) post = Post.objects.get(pk=self.post.pk) self.assertEqual(post.likes, response_json['likes']) self.assertEqual(post.last_likes, response_json['last_likes'])
def test_likes(self): """api returns list of likes""" like = testutils.like_post(self.post, self.user) other_like = testutils.like_post(self.post, self.user) response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual( response.json(), [ { 'id': other_like.id, 'liked_on': serialize_datetime(other_like.liked_on), 'liker_id': self.user.id, 'username': self.user.username, 'avatars': self.user.avatars, 'url': self.user.get_absolute_url(), }, { 'id': like.id, 'liked_on': serialize_datetime(like.liked_on), 'liker_id': self.user.id, 'username': self.user.username, 'avatars': self.user.avatars, 'url': self.user.get_absolute_url(), }, ] ) # api has no showstoppers for likes by deleted users like.liker = None like.save() other_like.liker = None other_like.save() response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual( response.json(), [ { 'id': other_like.id, 'liked_on': serialize_datetime(other_like.liked_on), 'liker_id': None, 'username': self.user.username, 'avatars': None, 'url': None, }, { 'id': like.id, 'liked_on': serialize_datetime(like.liked_on), 'liker_id': None, 'username': self.user.username, 'avatars': None, 'url': None, }, ] )
def test_likes(self): """api returns list of likes""" like = testutils.like_post(self.post, self.user) other_like = testutils.like_post(self.post, self.user) response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual( response.json(), [ PostLikeSerializer({ 'id': other_like.id, 'liked_on': other_like.liked_on, 'liker_id': other_like.liker_id, 'liker_name': other_like.liker_name, 'liker_slug': other_like.liker_slug, 'liker__avatars': self.user.avatars, }).data, PostLikeSerializer({ 'id': like.id, 'liked_on': like.liked_on, 'liker_id': like.liker_id, 'liker_name': like.liker_name, 'liker_slug': like.liker_slug, 'liker__avatars': self.user.avatars, }).data, ] ) # api has no showstoppers for likes by deleted users like.liker = None like.save() other_like.liker = None other_like.save() response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual( response.json(), [ PostLikeSerializer({ 'id': other_like.id, 'liked_on': other_like.liked_on, 'liker_id': other_like.liker_id, 'liker_name': other_like.liker_name, 'liker_slug': other_like.liker_slug, 'liker__avatars': None, }).data, PostLikeSerializer({ 'id': like.id, 'liked_on': like.liked_on, 'liker_id': like.liker_id, 'liker_name': like.liker_name, 'liker_slug': like.liker_slug, 'liker__avatars': None, }).data, ] )
def test_liked_posts_no_permission(self): """ view has no showstoppers on displaying posts with likes without perm """ testutils.like_post(self.thread.first_post, self.user) self.override_acl({'can_see_posts_likes': 0}) response = self.client.get(self.thread.get_absolute_url()) self.assertNotContains(response, '"is_liked": true') self.assertNotContains(response, '"is_liked": false') self.assertContains(response, '"is_liked": null')
def test_likes(self): """api returns list of likes""" like = testutils.like_post(self.post, self.user) other_like = testutils.like_post(self.post, self.user) response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), [ PostLikeSerializer({ 'id': other_like.id, 'liked_on': other_like.liked_on, 'liker_id': other_like.liker_id, 'liker_name': other_like.liker_name, 'liker_slug': other_like.liker_slug, 'liker__avatars': self.user.avatars, }).data, PostLikeSerializer({ 'id': like.id, 'liked_on': like.liked_on, 'liker_id': like.liker_id, 'liker_name': like.liker_name, 'liker_slug': like.liker_slug, 'liker__avatars': self.user.avatars, }).data, ]) # api has no showstoppers for likes by deleted users like.liker = None like.save() other_like.liker = None other_like.save() response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), [ PostLikeSerializer({ 'id': other_like.id, 'liked_on': other_like.liked_on, 'liker_id': other_like.liker_id, 'liker_name': other_like.liker_name, 'liker_slug': other_like.liker_slug, 'liker__avatars': None, }).data, PostLikeSerializer({ 'id': like.id, 'liked_on': like.liked_on, 'liker_id': like.liker_id, 'liker_name': like.liker_name, 'liker_slug': like.liker_slug, 'liker__avatars': None, }).data, ])
def test_liked_posts_no_permission(self): """ view has no showstoppers on displaying posts with likes without perm """ testutils.like_post(self.thread.first_post, self.user) self.override_acl({'can_see_posts_likes': 0}) response = self.client.get(self.thread.get_absolute_url()) self.assertNotContains(response, '"is_liked": true') self.assertNotContains(response, '"is_liked": false') self.assertContains(response, '"is_liked": null')
def test_likes(self): """api returns list of likes""" like = testutils.like_post(self.post, self.user) other_like = testutils.like_post(self.post, self.user) other_like.liker = None other_like.save() response = self.client.get(self.api_link) self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), [ PostLikeSerializer(other_like.__dict__).data, PostLikeSerializer(like.__dict__).data, ])
def test_unlike_post(self): """api removes user like from post""" testutils.like_post(self.post, self.user) response = self.patch(self.api_link, [ {'op': 'replace', 'path': 'is-liked', 'value': False} ]) self.assertEqual(response.status_code, 200) response_json = response.json() self.assertEqual(response_json['likes'], 0) self.assertEqual(response_json['is_liked'], False) self.assertEqual(response_json['last_likes'], []) post = Post.objects.get(pk=self.post.pk) self.assertEqual(post.likes, response_json['likes']) self.assertEqual(post.last_likes, response_json['last_likes'])
def test_unlike_post(self): """api removes user like from post""" testutils.like_post(self.post, self.user) response = self.patch( self.api_link, [ { 'op': 'replace', 'path': 'is-liked', 'value': False, }, ] ) self.assertEqual(response.status_code, 200) response_json = response.json() self.assertEqual(response_json['likes'], 0) self.assertEqual(response_json['is_liked'], False) self.assertEqual(response_json['last_likes'], []) post = Post.objects.get(pk=self.post.pk) self.assertEqual(post.likes, response_json['likes']) self.assertEqual(post.last_likes, response_json['last_likes'])
def test_like_liked_post(self): """api adds user like to post""" testutils.like_post(self.post, username='******') testutils.like_post(self.post, username='******') testutils.like_post(self.post, username='******') testutils.like_post(self.post, username='******') response = self.patch( self.api_link, [ { 'op': 'replace', 'path': 'is-liked', 'value': True, }, ] ) self.assertEqual(response.status_code, 200) response_json = response.json() self.assertEqual(response_json['likes'], 5) self.assertEqual(response_json['is_liked'], True) self.assertEqual( response_json['last_likes'], [ { 'id': self.user.id, 'username': self.user.username }, { 'id': None, 'username': '******', }, { 'id': None, 'username': '******', }, { 'id': None, 'username': '******', }, ] ) post = Post.objects.get(pk=self.post.pk) self.assertEqual(post.likes, response_json['likes']) self.assertEqual(post.last_likes, response_json['last_likes'])
def test_liked_posts_display(self): """view has no showstoppers on displaying posts with likes""" testutils.like_post(self.thread.first_post, self.user) response = self.client.get(self.thread.get_absolute_url()) self.assertContains(response, '"is_liked": true')
def test_liked_posts_display(self): """view has no showstoppers on displaying posts with likes""" testutils.like_post(self.thread.first_post, self.user) response = self.client.get(self.thread.get_absolute_url()) self.assertContains(response, '"is_liked": true')