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)
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)
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))
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)
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)
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))
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'])
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))
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)
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"], )