abuse_complaint_test.rb 1.74 KB
require_relative "../test_helper"

class AbuseComplaintTest < ActiveSupport::TestCase

  should 'be related with a reported' do
    reported = fast_create(Profile)
    abuse_complaint = AbuseComplaint.new

    assert !abuse_complaint.valid?
    assert abuse_complaint.errors[:reported].any?

    abuse_complaint.reported = reported

    assert abuse_complaint.valid?
  end

  should 'become active if number of reports passes environment\'s lower bound' do
    reported = fast_create(Profile)
    p1 = fast_create(Person)
    p2 = fast_create(Person)
    p3 = fast_create(Person)
    abuse_complaint = AbuseComplaint.create!(:reported => reported)

    assert_equal Task::Status::HIDDEN, abuse_complaint.status

    reported.environment.stubs(:reports_lower_bound).returns(2)
    r1 = AbuseReport.new(:reason => 'some reason').tap do |a| 
      a.reporter = p1
      a.abuse_complaint = abuse_complaint
    end.save
    r2 = AbuseReport.new(:reason => 'some reason').tap do |a| 
      a.reporter = p2
      a.abuse_complaint = abuse_complaint
    end.save
    r3 = AbuseReport.new(:reason => 'some reason').tap do |a| 
      a.reporter = p3
      a.abuse_complaint = abuse_complaint
    end.save

    assert_equal Task::Status::ACTIVE, abuse_complaint.status
  end

  should 'start with hidden status' do
    t = AbuseComplaint.create
    assert_equal Task::Status::HIDDEN, t.status
  end

  should 'be destroyed with reported' do
    reported = fast_create(Profile)
    reported_id = reported.id
    abuse_complaint = AbuseComplaint.create!(:reported => reported)

    assert AbuseComplaint.find_by_requestor_id(reported_id), "AbuseComplaint was not created!"

    reported.destroy

    assert !AbuseComplaint.find_by_requestor_id(reported_id), "AbuseComplaint still exist!"
  end
end