Make reports trigger a spam check on the reported user

This commit is contained in:
Tom Hughes 2025-02-16 13:34:12 +00:00
parent a87cd780d6
commit b68aa8f3dd
2 changed files with 40 additions and 0 deletions

View file

@ -29,6 +29,8 @@ class ReportsController < ApplicationController
@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")

View file

@ -111,4 +111,42 @@ class ReportsControllerTest < ActionDispatch::IntegrationTest
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