From 8170ef8363e8db5427a8d24a0f47bf2142e9875a Mon Sep 17 00:00:00 2001 From: Lukas Matt Date: Fri, 16 May 2014 08:28:18 -0400 Subject: [PATCH] Validate on report that post or comment does exist --- app/models/report.rb | 7 +++++++ spec/models/report_spec.rb | 20 ++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/models/report.rb b/app/models/report.rb index 6ee562293..36356c48f 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -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 diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index 82d5d8603..3595a6a1a 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -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