(params[:user][:auth_provider] == current_user.auth_provider &&
params[:user][:auth_uid] == current_user.auth_uid)
update_user(current_user, user_params)
- if current_user.errors.count.zero?
+ if current_user.errors.empty?
redirect_to edit_account_path
else
render :edit
# Ignore errors sending email
end
else
- current_user.errors.add(:new_email, current_user.errors[:email])
- current_user.errors.add(:email, [])
+ current_user.errors.delete(:email).each do |error|
+ current_user.errors.add(:new_email, error)
+ end
end
user.restore_email!
@report.issue.reopen unless @report.issue.open?
@report.issue.save!
+ @report.issue.reported_user&.spam_check
+
redirect_to helpers.reportable_url(@report.issue.reportable), :notice => t(".successful_report")
else
flash.now[:notice] = t(".provide_details")
trace_score = traces.size * 50
diary_entry_score = diary_entries.visible.inject(0) { |acc, elem| acc + elem.body.spam_score }
diary_comment_score = diary_comments.visible.inject(0) { |acc, elem| acc + elem.body.spam_score }
- report_score = Report.where(:category => "spam", :issue => issues.with_status("open")).count * 20
+ report_score = Report.where(:category => "spam", :issue => issues.with_status("open")).distinct.count(:user_id) * 20
score = description.spam_score / 4.0
score += diary_entries.visible.where("created_at > ?", 1.day.ago).count * 10
assert_equal 2, issue.reports.count
end
+
+ def test_spam_reports_can_suspend
+ target_user = create(:user)
+
+ session_for(create(:user))
+
+ post reports_path(:report => {
+ :details => "Spammer",
+ :category => "spam",
+ :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+ })
+ assert_equal "active", target_user.reload.status
+
+ session_for(create(:user))
+
+ post reports_path(:report => {
+ :details => "Spammer",
+ :category => "spam",
+ :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+ })
+ assert_equal "active", target_user.reload.status
+
+ post reports_path(:report => {
+ :details => "Spammer",
+ :category => "spam",
+ :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+ })
+ assert_equal "active", target_user.reload.status
+
+ session_for(create(:user))
+
+ post reports_path(:report => {
+ :details => "Spammer",
+ :category => "spam",
+ :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+ })
+ assert_equal "suspended", target_user.reload.status
+ end
end