Example #1
0
 def test_active(self):
     ''' Posts are soft deleted, so only get active posts. '''
     create_post(self.user1)
     p2 = create_post(self.user1)
     p2.is_active = False
     p2.save()
     active_posts = Post.objects.active()
     self.assertEqual(active_posts.count(), 1)
Example #2
0
    def test_get_replies(self):
        p = create_post(self.user1)
        create_post(self.user1, is_reply=True, parent=p)

        r2 = create_post(self.user1, is_reply=True, parent=p)
        r2.is_active = False
        r2.save()

        reply_count = p.get_replies().count()
        self.assertEqual(reply_count, 1)
Example #3
0
    def test_recommended_posts(self):
        self.authenticate()
        create_post(self.user2)
        response = self.client.get(self.url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the correct results are returned.
        recommended_post_username = response.data[0].get("author").get("username")
        self.assertEqual(recommended_post_username, self.user2.username)
Example #4
0
    def test_profile_posts(self):
        create_post(self.user1)

        p2 = create_post(self.user1)
        p2.is_active = False
        p2.save()

        create_post(self.user2)

        profile_post_count = Post.objects.profile_posts(self.user1).count()
        self.assertEqual(profile_post_count, 1)
Example #5
0
    def test_long_recommended_posts(self):
        self.authenticate()
        create_post(self.user2)
        response = self.client.get(self.url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the response data is paginated.
        self.assertIsInstance(response.data.get("results"), list)

        # Make sure the correct results are returned.
        recommended_post_username = (
            response.data.get("results")[0].get("author").get("username")
        )
        self.assertEqual(recommended_post_username, self.user2.username)
Example #6
0
    def test_get_post_replies(self):
        self.authenticate()
        p = create_post(self.user1)
        create_post(self.user1, is_reply=True, parent=p)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        response = self.client.get(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the response data is paginated.
        self.assertIsInstance(response.data.get("results"), list)

        # Make sure the correct results are returned.
        reply_count = p.get_replies().count()
        self.assertEqual(reply_count, 1)
Example #7
0
    def test_profile_posts(self):
        self.authenticate()
        create_post(self.user1)
        create_post(self.user2)
        url = reverse(self.endpoint, kwargs={"slug": self.user1.slug})
        response = self.client.get(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the respnose data is paginated.
        self.assertIsInstance(response.data.get("results"), list)

        # Make sure the correct results are returned.
        results_count = len(response.data.get("results"))
        self.assertEqual(results_count, 1)
Example #8
0
    def test_get_post_detail(self):
        self.authenticate()
        p = create_post(self.user1)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        response = self.client.get(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Example #9
0
    def test_must_be_owner(self):
        self.authenticate()
        p = create_post(self.user2)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        data = {"body": "testing"}
        response = self.client.patch(url, data)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Example #10
0
    def test_delete_post_detail(self):
        self.authenticate()
        p = create_post(self.user1)
        url = reverse(self.endpoint, kwargs={'pk': p.pk})
        response = self.client.delete(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

        # Make sure the post was deleted.
        post_count = self.user1.posts.active().count()
        self.assertEqual(post_count, 0)
Example #11
0
    def test_add_like(self):
        self.authenticate()
        p = create_post(self.user1)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        response = self.client.post(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        # Make sure the like was created.
        likes_count = p.liked.count()
        self.assertEqual(likes_count, 1)
Example #12
0
    def test_delete_like(self):
        self.authenticate()
        p = create_post(self.user1)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        response = self.client.delete(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

        # Make sure the like was deleted.
        likes_count = p.liked.count()
        self.assertEqual(likes_count, 0)
Example #13
0
 def test_feed(self):
     ''' Feed consists of a user's posts, and posts that user is following.
     Here user1, user2, and user3 create a post. user1 follows user2,
     therefore the feed should only consist of 2 posts. '''
     create_post(self.user1)
     create_post(self.user2)
     create_post(self.user3)
     self.user1.follow(self.user2)
     feed_count = Post.objects.feed(self.user1).count()
     self.assertEqual(feed_count, 2)
Example #14
0
    def test_profile_likes(self):
        self.authenticate()
        url = reverse(self.endpoint, kwargs={'slug': self.user1.slug})
        response = self.client.get(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the respnose data is paginated.
        self.assertIsInstance(response.data.get('results'), list)

        # Make sure the correct results are returned.
        p = create_post(self.user1)
        p.liked.add(self.user1)
        post_likes_count = p.liked.count()
        self.assertEqual(post_likes_count, 1)
Example #15
0
    def test_update_post_detail(self):
        self.authenticate()
        p = create_post(self.user1)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        new_body = "testing"
        data = {
            "body": new_body,
        }
        response = self.client.patch(url, data)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure post was updated.
        updated_body = self.user1.posts.get(pk=p.pk).body
        self.assertEqual(updated_body, new_body)
Example #16
0
    def test_get_likes(self):
        self.authenticate()
        p = create_post(self.user1)
        p.liked.add(self.user1)
        url = reverse(self.endpoint, kwargs={"pk": p.pk})
        response = self.client.get(url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the response data is paginated.
        self.assertIsInstance(response.data.get("results"), list)

        # Make sure the results are correct.
        likes_count = p.liked.count()
        self.assertEqual(likes_count, 1)
Example #17
0
    def test_recommend_posts(self):
        p1 = create_post(self.user2)
        create_post(self.user3, parent=p1)
        create_post(self.user3)
        self.user1.follow(self.user2)
        recommend_post_count = Post.objects.recommend_posts(self.user1).count()
        self.assertEqual(recommend_post_count, 1)

        for _ in range(0, 10):
            create_post(self.user3)

        recommend_post_count = Post.objects.recommend_posts(self.user1).count()
        self.assertEqual(recommend_post_count, 5)

        recommend_post_count = Post.objects.recommend_posts(self.user1,
                                                            long=True).count()
        self.assertEqual(recommend_post_count, 11)
Example #18
0
    def test_create_repost(self):
        self.authenticate()
        p = create_post(self.user2)
        data = {
            "body": "testing",
            "is_reply": False,
            "parent_id": p.id,
        }
        response = self.client.post(self.url, data)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        # Make sure the repost was created.
        repost_count = p.alt.filter(~Q(parent_id=None), is_reply=False).count()
        self.assertEqual(repost_count, 1)

        # Make sure user2 gets notified of a repost.
        notifications_count = self.user2.notifications.count()
        self.assertEqual(notifications_count, 1)
Example #19
0
    def test_create_reply(self):
        self.authenticate()
        p = create_post(self.user2)
        data = {
            'body': 'testing',
            'is_reply': True,
            'parent_id': p.id,
        }
        response = self.client.post(self.url, data)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        # Make sure the reply was created.
        post_count = self.user1.posts\
            .filter(~Q(parent_id=None), is_reply=True)\
            .count()
        self.assertEqual(post_count, 1)

        # Make sure user2 gets notified of a repost.
        notifications_count = self.user2.notifications.count()
        self.assertEqual(notifications_count, 1)
Example #20
0
    def test_feed(self):
        self.authenticate()
        create_post(self.user1)
        create_post(self.user2)
        create_post(self.user3)
        self.user1.follow(self.user2)

        response = self.client.get(self.url)

        # Test status code.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Make sure the response data is paginated.
        self.assertIsInstance(response.data.get("results"), list)

        # Make sure the correct results are returned.
        results_count = len(response.data.get("results"))
        self.assertEqual(results_count, 2)
Example #21
0
    def test_posts(self):
        p1 = create_post(self.user1)
        create_post(self.user1, is_reply=True, parent=p1)

        p2 = create_post(self.user1)
        p2.is_active = False
        p2.save()

        posts = Post.objects.posts().filter(author=self.user1)

        # Check post count
        post_count = posts.count()
        self.assertEqual(post_count, 1)

        # Check reply count
        reply_count = len(posts[0].reply_ids)
        self.assertEqual(reply_count, 1)

        # Check repost count
        create_post(self.user1, parent=p1)
        repost_count = len(posts[0].repost_ids)
        self.assertEqual(repost_count, 1)
Example #22
0
 def test_string_representation(self):
     p = create_post(self.user1, body="testing")
     self.assertEqual(str(p), "testing")