Validate on report that post or comment does exist

This commit is contained in:
Lukas Matt 2014-05-16 08:28:18 -04:00
parent 6d6ebd297e
commit 8170ef8363
2 changed files with 25 additions and 2 deletions

View file

@ -6,6 +6,7 @@ class Report < ActiveRecord::Base
validates :text, presence: true
validate :entry_does_not_exist, :on => :create
validate :post_or_comment_does_exist, :on => :create
belongs_to :user
belongs_to :post
@ -19,6 +20,12 @@ class Report < ActiveRecord::Base
end
end
def post_or_comment_does_exist
if Post.find_by_id(item_id).nil? && Comment.find_by_id(item_id).nil?
errors[:base] << 'Post or comment was already deleted or doesn\'t exists.'
end
end
def destroy_reported_item
if item_type == 'post'
delete_post

View file

@ -25,11 +25,27 @@ describe Report do
describe '#validation' do
it 'validates that post ID is required' do
@user.reports.build(:item_type => 'post', :text => 'blub').should_not be_valid
report = @valid_post_report
report.delete(:item_id)
@user.reports.build(report).should_not be_valid
end
it 'validates that post type is required' do
@user.reports.build(:item_id => 666, :text => 'blub').should_not be_valid
report = @valid_post_report
report.delete(:item_type)
@user.reports.build(report).should_not be_valid
end
it 'validates that post does exist' do
report = @valid_post_report
report[:item_id] = 666;
@user.reports.build(report).should_not be_valid
end
it 'validates that comment does exist' do
report = @valid_comment_report
report[:item_id] = 666;
@user.reports.build(report).should_not be_valid
end
it 'validates that entry does not exist' do