Пример #1
0
    def test_polls_counters(self):
        poll = PollFactory()
        ChoiceFactory.create_batch(3, poll=poll)

        choice1, choice2, choice3 = Choice.objects.order_by('id')
        self.assertEqual(choice1.vote_count, 0)
        self.assertEqual(choice2.vote_count, 0)
        self.assertEqual(choice3.vote_count, 0)
        self.assertEqual(Poll.objects.first().sum_votes, 0)

        VoteFactory(content_object=choice1, score=1)
        VoteFactory(content_object=choice2, score=1)
        VoteFactory(content_object=choice1, score=1)

        choice1, choice2, choice3 = Choice.objects.order_by('id')
        self.assertEqual(choice1.vote_count, 2)
        self.assertEqual(choice2.vote_count, 1)
        self.assertEqual(choice3.vote_count, 0)
        self.assertEqual(Poll.objects.first().sum_votes, 3)

        choice2.delete()
        self.assertEqual(Poll.objects.first().sum_votes, 2)

        choice1.delete()
        self.assertEqual(Poll.objects.first().sum_votes, 0)

        choice3.delete()
        self.assertEqual(Poll.objects.first().sum_votes, 0)
Пример #2
0
    def test_article_rating(self):
        article = ArticleFactory()

        VoteFactory(content_object=article, score=3)
        VoteFactory(content_object=article, score=5)

        article.refresh_from_db()
        self.assertEqual(article.rating, 4)
        self.assertEqual(article.vote_count, 2)
Пример #3
0
    def test_comment_likes(self):
        comment = CommentFactory()

        for score in (1, -1, 1, 1):
            VoteFactory(content_object=comment, score=score)
        comment.refresh_from_db()
        self.assertEqual(comment.karma, 2)

        Vote.objects.all().delete()
        comment.refresh_from_db()
        self.assertEqual(comment.karma, 0)
Пример #4
0
 def create_votes_for(self, obj_id, obj_ct, max_count, tokens, users,
                      score_fun):
     vote_count = random.randint(0, max_count)
     vote_tokens = random.sample(tokens, vote_count)
     vote_users = random.sample(users, vote_count)
     for i in range(vote_count):
         params = dict(object_id=obj_id,
                       content_type=obj_ct,
                       score=score_fun())
         if random.randint(0, 1):
             params['token'] = vote_tokens[i]
         else:
             params['user'] = vote_users[i]
         VoteFactory(**params)
Пример #5
0
    def test_update_vote_article_anonymous(self):
        article = ArticleFactory()

        self.app.get('/')  # create session_key
        token = Session.objects.first().session_key

        VoteFactory(content_object=article, score=2, token=token)

        resp = self.app.post('/votes/article/', {
            'object_id': article.id,
            'score': 5
        },
                             HTTP_REFERER='/material/news/1/')
        self.assertEqual(resp.status_code, 302)
        self.assertEqual(resp.url, '/material/news/1/')

        votes = Vote.objects.all()
        self.assertEqual(len(votes), 1)
        self.assertEqual(votes[0].token, token)
        self.assertEqual(votes[0].object_id, article.id)
        self.assertEqual(votes[0].score, 5)
Пример #6
0
    def test_update_vote_article_user(self):
        article = ArticleFactory()

        user = UserFactory(username='******')
        user.set_password('secret')
        user.save()
        self.app.login(username='******', password='******')

        VoteFactory(content_object=article, score=2, user=user)

        resp = self.app.post('/votes/article/', {
            'object_id': article.id,
            'score': 3
        },
                             HTTP_REFERER='/material/news/1/')
        self.assertEqual(resp.status_code, 302)
        self.assertEqual(resp.url, '/material/news/1/')

        votes = Vote.objects.all()
        self.assertEqual(len(votes), 1)
        self.assertEqual(votes[0].user, user)
        self.assertEqual(votes[0].object_id, article.id)
        self.assertEqual(votes[0].score, 3)
Пример #7
0
    def test_update_vote_comment_user(self):
        comment = CommentFactory()

        user = UserFactory(username='******')
        user.set_password('secret')
        user.save()
        self.app.login(username='******', password='******')

        VoteFactory(content_object=comment, score=1, user=user)

        resp = self.app.post('/votes/comment/', {
            'object_id': comment.id,
            'score': -1
        },
                             HTTP_REFERER='/material/news/1/')
        self.assertEqual(resp.status_code, 302)
        self.assertEqual(resp.url, '/material/news/1/')

        votes = Vote.objects.all()
        self.assertEqual(len(votes), 1)
        self.assertEqual(votes[0].user, user)
        self.assertEqual(votes[0].object_id, comment.id)
        self.assertEqual(votes[0].score, -1)