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'])
Пример #3
0
    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,
            ]
        )
Пример #5
0
    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')
Пример #8
0
    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,
        ])
Пример #9
0
    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'])
Пример #12
0
    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')