Esempio n. 1
0
 def test_user_can_follow_users(self):
     """
     Authenticated users should be able to follow other users.
     """
     login(self.mr_foo)
     response = self.follow('mr_baz')
     self.assertEqual(response.status_code, status.HTTP_200_OK)
Esempio n. 2
0
 def test_article_without_violations_cannot_be_processed(self):
     login(verified=True)
     clean_article = self.generate_article(published=True)
     login(admin=True)
     response = self.process_violation(clean_article, 'approve')
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertIn("This article does not have any pending violation reports.", response.data['error'])
 def test_dislike_me_is_accurate(self):
     login()
     self.dislike(self.slug)
     response = self.get_reactions(self.slug)
     self.assertReactionsEqual(response.data['reactions'],
                               dislike_me=True,
                               dislike_count=1)
Esempio n. 4
0
 def test_user_cannot_follow_themselves(self):
     """
     Users cannot follow themselves. It makes no logical sense. :)
     """
     login(self.mr_foo)
     response = self.follow('mr_foo')
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertIn('You cannot follow yourself.', response.data['errors'])
Esempio n. 5
0
 def test_owner_view_is_not_added_to_stats(self):
     # owner logs in and views article
     login(self.owner)
     self.view_article(self.slug)
     # owner gets stats
     response = self.article_stats()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertStatsEqual(response.data, views=0)
 def test_an_article_can_have_many_dislikes(self):
     login()
     self.dislike(self.slug)  # first dislike
     login()
     response = self.dislike(self.slug)  # second dislike
     self.assertReactionsEqual(response.data['reactions'],
                               dislike_count=2,
                               dislike_me=True)
Esempio n. 7
0
 def test_users_cannot_report_an_article_more_than_once(self):
     login(verified=True)
     slug = self.generate_article(published=True)
     login()
     response = self.report(slug)  # report for the first time
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     response = self.report(slug)  # report for the second time
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertIn(b"You cannot report an article more than once.", response.content)
Esempio n. 8
0
 def test_user_cannot_un_follow_themselves(self):
     """
     Users should be able to un-follow themselves. It does not make any logical sense.
     """
     # let 'mr_foo' attempt to follow self
     login(self.mr_foo)
     response = self.un_follow('mr_foo')
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertIn('You cannot follow or un follow yourself.',
                   json.dumps(response.data))
Esempio n. 9
0
 def test_users_can_report_articles(self):
     login(verified=True)
     slug = self.generate_article(published=True)
     login()
     response = self.report(slug)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertIn(
         b"Your report has been received. You will receive a confirmation email shortly.",
         response.content
     )
Esempio n. 10
0
 def test_only_one_view_is_added_per_user(self):
     # other users view article
     login()
     self.view_article(self.slug)
     self.view_article(self.slug)
     # owner logs in
     login(self.owner)
     response = self.article_stats()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertStatsEqual(response.data, views=1)
Esempio n. 11
0
 def test_multiple_comments_by_same_user_are_added_to_stats(self):
     # other users comment on article
     login()
     self.comment_on_article(self.slug)
     self.comment_on_article(self.slug)
     self.comment_on_article(self.slug)
     # owner logs in
     login(self.owner)
     response = self.article_stats()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertStatsEqual(response.data, comments=3)
Esempio n. 12
0
 def test_user_can_un_follow_users(self):
     """
     Authenticated users should be able to un-follow users they are currently following.
     """
     # let 'mr_foo' follow then un-follow 'mr_baz'
     login(self.mr_foo)
     # follow
     self.follow('mr_baz')
     # un-follow
     response = self.un_follow('mr_baz')
     self.assertEqual(response.status_code, status.HTTP_200_OK)
 def test_disliking_an_article_reverts_a_like_on_it(self):
     login()
     response = self.like(self.slug)  # like
     self.assertReactionsEqual(response.data['reactions'],
                               like_count=1,
                               like_me=True,
                               dislike_count=0,
                               dislike_me=False)
     response = self.dislike(self.slug)  # dislike
     self.assertReactionsEqual(response.data['reactions'],
                               like_count=0,
                               like_me=False,
                               dislike_count=1,
                               dislike_me=True)
Esempio n. 14
0
 def test_user_can_see_following_list(self):
     """
     Authenticated users can retrieve their following list.
     """
     login(self.mr_foo)
     # let 'mr_foo' follow both 'mr_bar' and 'mr_baz'
     self.follow('mr_bar')
     self.follow('mr_baz')
     # retrieve mr_foo's following
     response = self.following('mr_foo')
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     # assert that 'mr_bar' and 'mr_baz' are on the following list
     data = json.dumps(response.data)
     self.assertIn('mr_bar', data)
     self.assertIn('mr_baz', data)
Esempio n. 15
0
 def test_user_can_see_followers_list(self):
     """
     Authenticated users can retrieve followers list.
     """
     # let 'mr_bar' and 'mr_baz' follow 'mr_foo'
     login(self.mr_bar)
     self.follow('mr_foo')
     login(self.mr_baz)
     self.follow('mr_foo')
     # retrieve mr_foo's followers
     response = self.followers('mr_foo')
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     # assert that 'mr_bar' and 'mr_baz' are on the followers list
     data = json.dumps(response.data)
     self.assertIn('mr_bar', data)
     self.assertIn('mr_baz', data)
Esempio n. 16
0
 def setUp(self):
     super().setUp()
     set_test_client(self.client)
     self.owner = login(verified=True)
     self.article = self.create_article(published=True)
     self.slug = self.article['slug']
     logout()
Esempio n. 17
0
 def test_ratings_on_articles_are_added_to_stats(self):
     # other users rate article
     login()
     self.rate_article(self.slug, 4)
     login()
     self.rate_article(self.slug, 2)
     login()
     self.rate_article(self.slug, 3)
     # owner logs in - avg rating should be (4 + 2 + 3)/3 = 3
     login(self.owner)
     response = self.article_stats()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertStatsEqual(response.data, rating=3)
Esempio n. 18
0
 def test_views_by_different_users_are_added_to_stats(self):
     # other users view article
     login()
     self.view_article(self.slug)
     login()
     self.view_article(self.slug)
     login()
     self.view_article(self.slug)
     # owner logs in
     login(self.owner)
     response = self.article_stats()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertStatsEqual(response.data, views=3)
Esempio n. 19
0
 def test_dislikes_on_articles_are_added_to_stats(self):
     # owner dislikes article
     login(self.owner)
     self.dislike_article(self.slug)
     # other users rate article
     login()
     self.dislike_article(self.slug)
     login()
     self.dislike_article(self.slug)
     # owner logs in
     login(self.owner)
     response = self.article_stats()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertStatsEqual(response.data, dislikes=3)
 def test_like_count_is_accurate(self):
     login()
     self.like(self.slug)
     login()
     self.like(self.slug)
     login()
     response = self.get_reactions(self.slug)
     self.assertReactionsEqual(response.data['reactions'], like_count=2)
Esempio n. 21
0
    def test_user_can_check_if_they_re_followed_by_others(self):
        """
        Authenticated users can check whether they're being followed.
        """
        # let 'mr_foo' check whether 'mr_bar' is following them
        login(self.mr_foo)
        response = self.is_following_me('mr_bar')
        self.assertEqual(response.data, {"following_status": False})

        # let 'mr_bar' follow 'mr_foo'
        login(self.mr_bar)
        self.follow('mr_foo')
        # let 'mr_foo' check whether 'mr_bar' is following them
        login(self.mr_foo)
        response = self.is_following_me('mr_bar')
        login(self.mr_bar)
        response2 = self.is_following_me('mr_foo')
        self.assertEqual(response.data, {"following_status": False})
        self.assertEqual(response2.data, {"following_status": True})
Esempio n. 22
0
 def setUp(self):
     super().setUp()
     login(verified=True)
     self.reported1 = self.generate_article(published=True)
     self.reported2 = self.generate_article(published=True)
     login()
     self.report(self.reported1)
     self.report(self.reported2)
     login()
     self.report(self.reported1)
     self.report(self.reported2)
     logout()
Esempio n. 23
0
 def test_admin_can_approve_article_violation_reports(self):
     login(admin=True)
     response = self.process_violation(self.reported1, 'approve')
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertIn("You have approved this violation.", response.data['message'])
Esempio n. 24
0
 def test_users_cannot_report_non_existent_articles(self):
     login(verified=True)
     response = self.report('foo-bar')
     self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
Esempio n. 25
0
 def test_unauthenticated_users_cannot_report_articles(self):
     login(verified=True)
     slug = self.generate_article(published=True)
     logout()
     response = self.report(slug)
     self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Esempio n. 26
0
 def test_users_cannot_report_their_own_articles(self):
     login(verified=True)
     slug = self.generate_article(published=True)
     response = self.report(slug)
     self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
     self.assertIn(b"You cannot perform this action on your own article", response.content)
Esempio n. 27
0
 def test_user_can_see_violation_types(self):
     login()
     self.assertEqual(self.violation_types().data, Violation.represent_violation_types())
Esempio n. 28
0
 def test_ordinary_users_cannot_process_article_violation_reports(self):
     login()
     response = self.process_violation(self.reported1, 'reject')
     self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
     response = self.process_violation(self.reported1, 'approve')
     self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Esempio n. 29
0
 def test_non_existent_article_cannot_be_processed(self):
     login(admin=True)
     response = self.process_violation('foobar', 'reject')
     self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
     self.assertIn("The article does not exist.", response.data['error'])
Esempio n. 30
0
 def test_invalid_decisions_are_not_allowed(self):
     login(admin=True)
     response = self.process_violation(self.reported1, 'foobar')
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertIn("This violation decision 'foobar' is not valid.", response.data['error'])