2015-09-25 12:07:36 +05:30
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: abuse_reports
|
|
|
|
#
|
|
|
|
# id :integer not null, primary key
|
|
|
|
# reporter_id :integer
|
|
|
|
# user_id :integer
|
|
|
|
# message :text
|
|
|
|
# created_at :datetime
|
|
|
|
# updated_at :datetime
|
|
|
|
#
|
|
|
|
|
2015-09-11 14:41:01 +05:30
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
RSpec.describe AbuseReport, type: :model do
|
|
|
|
subject { create(:abuse_report) }
|
|
|
|
|
|
|
|
it { expect(subject).to be_valid }
|
2015-10-24 18:46:33 +05:30
|
|
|
|
|
|
|
describe 'associations' do
|
|
|
|
it { is_expected.to belong_to(:reporter).class_name('User') }
|
|
|
|
it { is_expected.to belong_to(:user) }
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'validations' do
|
|
|
|
it { is_expected.to validate_presence_of(:reporter) }
|
|
|
|
it { is_expected.to validate_presence_of(:user) }
|
|
|
|
it { is_expected.to validate_presence_of(:message) }
|
2016-04-02 18:10:28 +05:30
|
|
|
it { is_expected.to validate_uniqueness_of(:user_id).with_message('has already been reported') }
|
2015-10-24 18:46:33 +05:30
|
|
|
end
|
2016-01-14 18:37:52 +05:30
|
|
|
|
|
|
|
describe '#remove_user' do
|
|
|
|
it 'blocks the user' do
|
|
|
|
report = build(:abuse_report)
|
|
|
|
|
|
|
|
allow(report.user).to receive(:destroy)
|
|
|
|
|
|
|
|
expect { report.remove_user }.to change { report.user.blocked? }.to(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'removes the user' do
|
|
|
|
report = build(:abuse_report)
|
|
|
|
|
|
|
|
expect { report.remove_user }.to change { User.count }.by(-1)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#notify' do
|
|
|
|
it 'delivers' do
|
|
|
|
expect(AbuseReportMailer).to receive(:notify).with(subject.id).
|
|
|
|
and_return(spy)
|
|
|
|
|
|
|
|
subject.notify
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns early when not persisted' do
|
|
|
|
report = build(:abuse_report)
|
|
|
|
|
|
|
|
expect(AbuseReportMailer).not_to receive(:notify)
|
|
|
|
|
|
|
|
report.notify
|
|
|
|
end
|
|
|
|
end
|
2015-09-11 14:41:01 +05:30
|
|
|
end
|