def process_action!
case type
- when 'none'
- handle_resolve!
when 'disable'
handle_disable!
when 'silence'
end
end
- def handle_resolve!
- if with_report? && report.account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
- # This is an automated report and it is being dismissed, so it's
- # a false positive, in which case update the account's trust level
- # to prevent further spam checks
-
- target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
- end
- end
-
def handle_disable!
authorize(target_account.user, :disable?)
log_action(:disable, target_account.user)
end
def resolve!(acting_account)
+ if account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
+ # This is an automated report and it is being dismissed, so it's
+ # a false positive, in which case update the account's trust level
+ # to prevent further spam checks
+
+ target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
+ end
+
RemovalWorker.push_bulk(Status.with_discarded.discarded.where(id: status_ids).pluck(:id)) { |status_id| [status_id, { immediate: true }] }
update!(action_taken: true, action_taken_by_account_id: acting_account.id)
end
end
end
+ describe 'POST #resolve' do
+ it 'resolves the report' do
+ report = Fabricate(:report)
+
+ put :resolve, params: { id: report }
+ expect(response).to redirect_to(admin_reports_path)
+ report.reload
+ expect(report.action_taken_by_account).to eq user.account
+ expect(report.action_taken).to eq true
+ end
+
+ it 'sets trust level when the report is an antispam one' do
+ report = Fabricate(:report, account: Account.representative)
+
+ put :resolve, params: { id: report }
+ report.reload
+ expect(report.target_account.trust_level).to eq Account::TRUST_LEVELS[:trusted]
+ end
+ end
+
describe 'POST #reopen' do
it 'reopens the report' do
report = Fabricate(:report)