def test_get_top_users(self):

        # user_1 added a review
        review_1 = self.create_dummy_review(user_id=self.user_1.id)

        # get list of top users
        top_users = db_statistics.get_top_users()
        self.assertEqual(len(top_users), 2)
        self.assertEqual(top_users[0]["id"], self.user_1.id)
        self.assertEqual(top_users[0]["score"], 1)

        # user_2 added a review
        self.create_dummy_review(user_id=self.user_2.id)

        # user_2 commented on review by user_1
        db_comment.create(
            user_id=self.user_2.id,
            review_id=review_1["id"],
            text="Test comment",
        )

        # get list of top users
        top_users = db_statistics.get_top_users()
        self.assertEqual(top_users[0]["id"], self.user_2.id)
        self.assertEqual(top_users[0]["score"], 2)
        self.assertEqual(top_users[1]["id"], self.user_1.id)
        self.assertEqual(top_users[1]["score"], 1)
    def test_get_top_users_overall(self, cache_set, cache_get):
        # user_1 added a review
        review_1 = self.create_dummy_review(user_id=self.user_1.id)

        # user_2 added a review
        review_2 = self.create_dummy_review(user_id=self.user_2.id)

        # user_2 commented on review by user_1
        db_comment.create(
            user_id=self.user_2.id,
            review_id=review_1["id"],
            text="Test comment",
        )

        # user_1 upvoted review by user_2
        db_vote.submit(
            user_id=self.user_1.id,
            revision_id=review_2["last_revision"]["id"],
            vote=True,
        )

        # get list of top users
        top_users = db_statistics.get_top_users_overall()
        expected_key = b"top_users_overall_cb_statistics"
        cache_get.assert_called_once_with(expected_key,
                                          db_statistics._CACHE_NAMESPACE)
        cache_set.assert_called_once_with(key=expected_key, val={"users": top_users},
                                          namespace=db_statistics._CACHE_NAMESPACE,
                                          time=db_statistics._DEFAULT_CACHE_EXPIRATION)
        self.assertEqual(len(top_users), 2)
        self.assertEqual(top_users[0]["id"], self.user_2.id)
        self.assertEqual(top_users[0]["score"], 7)
        self.assertEqual(top_users[1]["id"], self.user_1.id)
        self.assertEqual(top_users[1]["score"], 6)
Example #3
0
    def test_get_top_users_overall(self):
        # user_1 added a review
        review_1 = self.create_dummy_review(user_id=self.user_1.id)

        # user_2 added a review
        review_2 = self.create_dummy_review(user_id=self.user_2.id)

        # user_2 commented on review by user_1
        db_comment.create(
            user_id=self.user_2.id,
            review_id=review_1["id"],
            text="Test comment",
        )

        # user_1 upvoted review by user_2
        db_vote.submit(
            user_id=self.user_1.id,
            revision_id=review_2["last_revision"]["id"],
            vote=True,
        )

        # get list of top users
        top_users = db_statistics.get_top_users_overall()
        self.assertEqual(len(top_users), 2)
        self.assertEqual(top_users[0]["id"], self.user_2.id)
        self.assertEqual(top_users[0]["score"], 7)
        self.assertEqual(top_users[1]["id"], self.user_1.id)
        self.assertEqual(top_users[1]["score"], 6)
Example #4
0
def create():
    form = CommentEditForm()
    if form.validate_on_submit():
        db_comment.create(
            review_id=form.review_id.data,
            user_id=current_user.id,
            text=form.text.data,
        )
        flash.success('Comment has been saved!')
    else:
        flash.error('Comment must not be empty!')
    return redirect(url_for('review.entity', id=form.review_id.data))
Example #5
0
    def test_get_comments(self):
        db_comment.create(
            user_id=self.user1.id,
            text="This is a test comment.",
            review_id=self.review_id,
        )

        result_comments = db_users.get_comments(user_id=self.user2.id)
        self.assertEqual(len(result_comments), 0)

        result_comments = db_users.get_comments(user_id=self.user1.id)
        self.assertEqual(len(result_comments), 1)

        two_days_from_now = date.today() + timedelta(days=2)
        result_comments = db_users.get_comments(
            user_id=self.user1.id,
            from_date=two_days_from_now,
        )
        self.assertEqual(len(result_comments), 0)
Example #6
0
    def test_get_comments(self):
        db_comment.create(
            user_id=self.user1.id,
            text="This is a test comment.",
            review_id=self.review_id,
        )

        result_comments = db_users.get_comments(user_id=self.user2.id)
        self.assertEqual(len(result_comments), 0)

        result_comments = db_users.get_comments(user_id=self.user1.id)
        self.assertEqual(len(result_comments), 1)

        two_days_from_now = date.today() + timedelta(days=2)
        result_comments = db_users.get_comments(
            user_id=self.user1.id,
            from_date=two_days_from_now,
        )
        self.assertEqual(len(result_comments), 0)
    def test_get_users_with_comment_count(self):
        # user_1 added a review
        review_1 = self.create_dummy_review(user_id=self.user_1.id)

        # user_2 commented on review by user_1
        db_comment.create(
            user_id=self.user_2.id,
            review_id=review_1["id"],
            text="Test comment",
        )

        # get list of users with comment_count
        users_comment_count = db_statistics.get_users_with_comment_count()
        print("User Comments: ", users_comment_count)
        for user in users_comment_count:
            if str(user["id"]) == self.user_2.id:
                self.assertEqual(user["comment_count"], 1)
            else:
                self.assertEqual(user["comment_count"], 0)
Example #8
0
    def test_count_comment(self):
        db_comment.create(
            user_id=self.user.id,
            review_id=self.review['id'],
            text='I liked this review, but disagree with one of your points',
        )

        count = db_comment.count_comments(review_id=self.review['id'])
        self.assertEqual(count, 1)

        db_comment.create(
            user_id=self.user_2.id,
            review_id=self.review['id'],
            text='Okay, but I still think that this album could have better beats.',
        )
        count = db_comment.count_comments(review_id=self.review['id'])
        self.assertEqual(count, 2)
        count = db_comment.count_comments(review_id=self.review['id'], user_id=self.user.id)
        self.assertEqual(count, 1)
Example #9
0
def create():
    # TODO (code-master5): comment limit, revision and drafts, edit functionality
    form = CommentEditForm()
    if form.validate_on_submit():
        get_review_or_404(form.review_id.data)
        if current_user.is_blocked:
            flash.error(gettext("You are not allowed to write new comments because your "
                                "account has been blocked by a moderator."))
            return redirect(url_for('review.entity', id=form.review_id.data))
        # should be able to comment only if review exists
        db_comment.create(
            review_id=form.review_id.data,
            user_id=current_user.id,
            text=form.text.data,
        )
        flash.success(gettext("Comment has been saved!"))
    elif not form.text.data:
        # comment must have some text
        flash.error(gettext("Comment must not be empty!"))
    return redirect(url_for('review.entity', id=form.review_id.data))
Example #10
0
    def test_create_comment(self):
        comment = db_comment.create(
            user_id=self.user.id,
            review_id=self.review['id'],
            text='This is a comment',
        )

        comments, _ = db_comment.list_comments(review_id=self.review['id'])
        self.assertEqual(len(comments), 1)
        self.assertEqual(comment['id'], comments[0]['id'])
        self.assertEqual(comment['review_id'], comments[0]['review_id'])
Example #11
0
def create():
    # TODO (code-master5): comment limit, revision and drafts, edit functionality
    form = CommentEditForm()
    if form.validate_on_submit():
        get_review_or_404(form.review_id.data)
        if current_user.is_blocked:
            flash.error(
                gettext(
                    "You are not allowed to write new comments because your "
                    "account has been blocked by a moderator."))
            return redirect(url_for('review.entity', id=form.review_id.data))
        # should be able to comment only if review exists
        db_comment.create(
            review_id=form.review_id.data,
            user_id=current_user.id,
            text=form.text.data,
        )
        flash.success(gettext("Comment has been saved!"))
    elif not form.text.data:
        # comment must have some text
        flash.error(gettext("Comment must not be empty!"))
    return redirect(url_for('review.entity', id=form.review_id.data))
Example #12
0
    def test_delete_comment(self):
        comment = db_comment.create(
            user_id=self.user.id,
            review_id=self.review['id'],
            text='this comment will be deleted',
        )

        comments, _ = db_comment.list_comments(review_id=self.review['id'])
        self.assertEqual(len(comments), 1)

        db_comment.delete(comment['id'])
        comments, _ = db_comment.list_comments(review_id=self.review['id'])
        self.assertEqual(len(comments), 0)
Example #13
0
    def test_edit_comment(self):
        comment = db_comment.create(
            user_id=self.user.id,
            review_id=self.review['id'],
            text='this comment will be edited',
        )
        self.assertEqual(comment['edits'], 0)
        self.assertEqual(comment['last_revision']['text'], 'this comment will be edited')

        db_comment.update(
            comment_id=comment['id'],
            text='now edited',
        )
        comment = db_comment.get_by_id(comment['id'])
        self.assertEqual(comment['edits'], 1)
        self.assertEqual(comment['last_revision']['text'], 'now edited')
 def create_dummy_comment(self):
     return db_comment.create(
         user_id=self.commenter.id,
         text="Dummy Comment",
         review_id=self.review["id"],
     )
Example #15
0
 def create_dummy_comment(self):
     return db_comment.create(
         user_id=self.commenter.id,
         text="Dummy Comment",
         review_id=self.review["id"],
     )