def test_get_popular(self): reviews = db_review.get_popular() self.assertEqual(len(reviews), 0) db_review.create( entity_id="e7aad618-fa86-3983-9e77-405e21796eca", entity_type="release_group", user_id=self.user.id, text="Awesome", is_draft=False, license_id=self.license["id"], ) reviews = db_review.get_popular() self.assertEqual(len(reviews), 1) review = db_review.create( user_id=self.user.id, entity_id="e7aad618-fa86-3983-9e77-405e21796ece", entity_type="release_group", text="Not Awesome", is_draft=False, license_id=self.license["id"], language="en", ) db_review.set_hidden_state(review["id"], is_hidden=True) reviews = db_review.get_popular() self.assertEqual(len(reviews), 1) self.assertEqual(reviews[0]["is_hidden"], False)
def test_update(self): """Test if rating and count are updated when review is updated, deleted or hidden""" # Check avg_rating when review is created review = db_review.create( entity_id="e7aad618-fa86-3983-9e77-405e21796eca", entity_type="release_group", text=u"Testing!", rating=5, user_id=self.user.id, is_draft=False, license_id=self.license["id"], ) review_2 = db_review.create( entity_id="e7aad618-fa86-3983-9e77-405e21796eca", entity_type="release_group", text=u"Testing!", rating=4, user_id=self.user_2.id, is_draft=False, license_id=self.license["id"], ) avg_rating = db_avg_rating.get(review["entity_id"], review["entity_type"]) self.assertEqual(avg_rating["entity_id"], review["entity_id"]) self.assertEqual(avg_rating["entity_type"], review["entity_type"]) self.assertEqual(avg_rating["rating"], 4.5) self.assertEqual(avg_rating["count"], 2) # Check if avg_rating is updated after review_2 is hidden db_review.set_hidden_state(review_2["id"], is_hidden=True) avg_rating = db_avg_rating.get(review["entity_id"], review["entity_type"]) self.assertEqual(avg_rating["rating"], 5.0) self.assertEqual(avg_rating["count"], 1) # Check if avg_rating is updated after review_2 is revealed db_review.set_hidden_state(review_2["id"], is_hidden=False) avg_rating = db_avg_rating.get(review["entity_id"], review["entity_type"]) self.assertEqual(avg_rating["rating"], 4.5) self.assertEqual(avg_rating["count"], 2) # Check if avg_rating is updated after change in rating db_review.update( review_id=review_2["id"], drafted=review_2["is_draft"], text=u"Testing rating update", rating=None, ) avg_rating = db_avg_rating.get(review["entity_id"], review["entity_type"]) self.assertEqual(avg_rating["rating"], 5.0) self.assertEqual(avg_rating["count"], 1) # Check if avg_rating is updated after a review with rating is deleted db_review.delete(review["id"]) with self.assertRaises(db_exceptions.NoDataFoundException): db_avg_rating.get(review["entity_id"], review["entity_type"])
def test_get_popular(self): reviews = db_review.get_popular() self.assertEqual(len(reviews), 0) # popular reviews should not contain reviews saved as drafts review = db_review.create( entity_id="e7aad618-fa86-3983-9e77-405e21796eca", entity_type="release_group", user_id=self.user.id, text="A draft", is_draft=True, license_id=self.license["id"], ) reviews = db_review.get_popular() self.assertEqual(len(reviews), 0) # publishing the drafted review; now it should be in popular reviews db_review.update( review_id=review["id"], drafted=True, text=review["text"], rating=review["rating"], is_draft=False, ) reviews = db_review.get_popular() self.assertEqual(len(reviews), 1) self.assertEqual(reviews[0]["is_draft"], False) # A hidden review should not be in popular reviews db_review.set_hidden_state(review["id"], is_hidden=True) reviews = db_review.get_popular() self.assertEqual(len(reviews), 0)
def create_dummy_review(self, is_draft=False, is_hidden=False): review = db_review.create( entity_id="6b3cd75d-7453-39f3-86c4-1441f360e121", entity_type="release_group", user_id=self.user.id, text=self.review_text, rating=self.review_rating, is_draft=is_draft, license_id=self.license["id"], ) if is_hidden: db_review.set_hidden_state(review["id"], is_hidden=True) return review
def test_set_hidden_state(self): review = db_review.create( user_id=self.user.id, entity_id="e7aad618-fa86-3983-9e77-405e21796eca", entity_type="release_group", text="Awesome", is_draft=False, license_id=self.license["id"], ) db_review.set_hidden_state(review["id"], is_hidden=True) review = db_review.get_by_id(review["id"]) self.assertEqual(review["is_hidden"], True) db_review.set_hidden_state(review["id"], is_hidden=False) review = db_review.get_by_id(review["id"]) self.assertEqual(review["is_hidden"], False)
def unhide(id): review = get_review_or_404(id) if not review["is_hidden"]: flash.info(gettext("Review is not hidden.")) return redirect(url_for('.entity', id=review["id"])) form = AdminActionForm() if form.validate_on_submit(): db_review.set_hidden_state(review["id"], is_hidden=False) db_moderation_log.create(admin_id=current_user.id, action=AdminActions.ACTION_UNHIDE_REVIEW, reason=form.reason.data, review_id=review["id"]) flash.success(gettext("Review is not hidden anymore.")) return redirect(url_for('.entity', id=review["id"])) return render_template('log/action.html', review=review, form=form, action=AdminActions.ACTION_UNHIDE_REVIEW.value)
def hide(id): review = get_review_or_404(id) if review["is_hidden"]: flash.info(gettext("Review is already hidden.")) return redirect(url_for('.entity', id=review["id"])) form = AdminActionForm() if form.validate_on_submit(): db_review.set_hidden_state(review["id"], is_hidden=True) db_moderation_log.create(admin_id=current_user.id, action=ACTION_HIDE_REVIEW, reason=form.reason.data, review_id=review["id"]) review_reports, count = db_spam_report.list_reports(review_id=review["id"]) # pylint: disable=unused-variable for report in review_reports: db_spam_report.archive(report["user_id"], report["revision_id"]) flash.success(gettext("Review has been hidden.")) return redirect(url_for('.entity', id=review["id"])) return render_template('log/action.html', review=review, form=form, action=ACTION_HIDE_REVIEW)
def unhide(id): review = get_review_or_404(id) db_review.set_hidden_state(review["id"], is_hidden=False) flash.success(gettext("Review is not hidden anymore.")) return redirect(request.referrer or url_for('user.reviews', user_id=current_user.id))