diff --git a/app/assets/templates/comment_tpl.jst.hbs b/app/assets/templates/comment_tpl.jst.hbs
index 5dc240b49..2f8a9ae14 100644
--- a/app/assets/templates/comment_tpl.jst.hbs
+++ b/app/assets/templates/comment_tpl.jst.hbs
@@ -13,7 +13,7 @@
{{else}}
-
{{/if}}
diff --git a/app/assets/templates/photo_tpl.jst.hbs b/app/assets/templates/photo_tpl.jst.hbs
index a36e05879..9cf51d51b 100644
--- a/app/assets/templates/photo_tpl.jst.hbs
+++ b/app/assets/templates/photo_tpl.jst.hbs
@@ -7,7 +7,7 @@
{{else}}
-
+
diff --git a/app/assets/templates/single-post-viewer/single-post-moderation_tpl.jst.hbs b/app/assets/templates/single-post-viewer/single-post-moderation_tpl.jst.hbs
index 10fc6f0d2..d81f6a14b 100644
--- a/app/assets/templates/single-post-viewer/single-post-moderation_tpl.jst.hbs
+++ b/app/assets/templates/single-post-viewer/single-post-moderation_tpl.jst.hbs
@@ -5,7 +5,7 @@
{{else}}
-
+
diff --git a/app/assets/templates/stream-element_tpl.jst.hbs b/app/assets/templates/stream-element_tpl.jst.hbs
index 92ea4e5ee..bb13c0cfa 100644
--- a/app/assets/templates/stream-element_tpl.jst.hbs
+++ b/app/assets/templates/stream-element_tpl.jst.hbs
@@ -13,7 +13,7 @@
{{else}}
-
+
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 9e0eca2c7..b4194e7c8 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -30,6 +30,8 @@ class Comment < ActiveRecord::Base
validates :text, :presence => true, :length => {:maximum => 65535}
validates :parent, :presence => true #should be in relayable (pending on fixing Message)
+ has_many :reports, as: :item
+
scope :including_author, -> { includes(:author => :profile) }
scope :for_a_stream, -> { including_author.merge(order('created_at ASC')) }
diff --git a/app/models/post.rb b/app/models/post.rb
index e59576085..787924f8e 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -17,6 +17,8 @@ class Post < ActiveRecord::Base
xml_attr :provider_display_name
+ has_many :reports, as: :item
+
has_many :mentions, :dependent => :destroy
has_many :reshares, :class_name => "Reshare", :foreign_key => :root_guid, :primary_key => :guid
diff --git a/app/models/report.rb b/app/models/report.rb
index 6463bcf59..0ecaea927 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -1,10 +1,8 @@
class Report < ActiveRecord::Base
- POST, COMMENT = %w(post comment).map(&:freeze)
-
validates :user_id, presence: true
validates :item_id, presence: true
- validates :item_type, presence: true, :inclusion => { :in => %w(post comment),
- :message => 'Type should match `post` or `comment`!'}
+ validates :item_type, presence: true, inclusion: {
+ in: %w(Post Comment), message: "Type should match `Post` or `Comment`!"}
validates :text, presence: true
validate :entry_does_not_exist, :on => :create
@@ -13,17 +11,10 @@ class Report < ActiveRecord::Base
belongs_to :user
belongs_to :post
belongs_to :comment
+ belongs_to :item, polymorphic: true
after_commit :send_report_notification, :on => :create
- def item
- if item_type == POST
- Post.find_by(id: item_id)
- elsif item_type == COMMENT
- Comment.find_by(id: item_id)
- end
- end
-
def reported_author
item.author if item
end
diff --git a/db/migrate/20151003142048_update_report_item_types.rb b/db/migrate/20151003142048_update_report_item_types.rb
new file mode 100644
index 000000000..9a318edff
--- /dev/null
+++ b/db/migrate/20151003142048_update_report_item_types.rb
@@ -0,0 +1,7 @@
+class UpdateReportItemTypes < ActiveRecord::Migration
+ def change
+ Report.all.each do |report|
+ report.update_attribute :item_type, report[:item_type].capitalize
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index f2afae365..6a526fe46 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20150828132451) do
+ActiveRecord::Schema.define(version: 20151003142048) do
create_table "account_deletions", force: :cascade do |t|
t.string "diaspora_handle", limit: 255
diff --git a/spec/controllers/report_controller_spec.rb b/spec/controllers/report_controller_spec.rb
index e5d5a49eb..fc64d36dd 100644
--- a/spec/controllers/report_controller_spec.rb
+++ b/spec/controllers/report_controller_spec.rb
@@ -49,16 +49,16 @@ describe ReportController, type: :controller do
context "report offensive post" do
it "succeeds" do
- put :create, report: {item_id: @message.id, item_type: "post", text: "offensive content"}
+ put :create, report: {item_id: @message.id, item_type: "Post", text: "offensive content"}
expect(response.status).to eq(200)
- expect(Report.exists?(item_id: @message.id, item_type: "post")).to be true
+ expect(Report.exists?(item_id: @message.id, item_type: "Post")).to be true
end
end
context "report offensive comment" do
it "succeeds" do
- put :create, report: {item_id: @comment.id, item_type: "comment", text: "offensive content"}
+ put :create, report: {item_id: @comment.id, item_type: "Comment", text: "offensive content"}
expect(response.status).to eq(200)
- expect(Report.exists?(item_id: @comment.id, item_type: "comment")).to be true
+ expect(Report.exists?(item_id: @comment.id, item_type: "Comment")).to be true
end
end
end
@@ -68,14 +68,14 @@ describe ReportController, type: :controller do
it "is behind redirect_unless_admin_or_moderator" do
put :update, id: @message.id, type: "post"
expect(response).to redirect_to stream_path
- expect(Report.where(reviewed: false, item_id: @message.id, item_type: "post")).to be_truthy
+ expect(Report.where(reviewed: false, item_id: @message.id, item_type: "Post")).to be_truthy
end
end
context "mark comment report as user" do
it "is behind redirect_unless_admin_or_moderator" do
put :update, id: @comment.id, type: "comment"
expect(response).to redirect_to stream_path
- expect(Report.where(reviewed: false, item_id: @comment.id, item_type: "comment")).to be_truthy
+ expect(Report.where(reviewed: false, item_id: @comment.id, item_type: "Comment")).to be_truthy
end
end
@@ -86,7 +86,7 @@ describe ReportController, type: :controller do
it "succeeds" do
put :update, id: @message.id, type: "post"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @message.id, item_type: "post")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
end
end
context "mark comment report as admin" do
@@ -96,7 +96,7 @@ describe ReportController, type: :controller do
it "succeeds" do
put :update, id: @comment.id, type: "comment"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "comment")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
end
end
@@ -108,7 +108,7 @@ describe ReportController, type: :controller do
it "succeeds" do
put :update, id: @message.id, type: "post"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @message.id, item_type: "post")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
end
end
@@ -119,7 +119,7 @@ describe ReportController, type: :controller do
it "succeeds" do
put :update, id: @comment.id, type: "comment"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "comment")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
end
end
end
@@ -129,14 +129,14 @@ describe ReportController, type: :controller do
it "is behind redirect_unless_admin_or_moderator" do
delete :destroy, id: @message.id, type: "post"
expect(response).to redirect_to stream_path
- expect(Report.where(reviewed: false, item_id: @message.id, item_type: "post")).to be_truthy
+ expect(Report.where(reviewed: false, item_id: @message.id, item_type: "Post")).to be_truthy
end
end
context "destroy comment as user" do
it "is behind redirect_unless_admin_or_moderator" do
delete :destroy, id: @comment.id, type: "comment"
expect(response).to redirect_to stream_path
- expect(Report.where(reviewed: false, item_id: @comment.id, item_type: "comment")).to be_truthy
+ expect(Report.where(reviewed: false, item_id: @comment.id, item_type: "Comment")).to be_truthy
end
end
@@ -147,7 +147,7 @@ describe ReportController, type: :controller do
it "succeeds" do
delete :destroy, id: @message.id, type: "post"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @message.id, item_type: "post")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
end
end
context "destroy comment as admin" do
@@ -157,7 +157,7 @@ describe ReportController, type: :controller do
it "succeeds" do
delete :destroy, id: @comment.id, type: "comment"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "comment")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
end
end
@@ -168,7 +168,7 @@ describe ReportController, type: :controller do
it "succeeds" do
delete :destroy, id: @message.id, type: "post"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @message.id, item_type: "post")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
end
end
context "destroy comment as moderator" do
@@ -178,7 +178,7 @@ describe ReportController, type: :controller do
it "succeeds" do
delete :destroy, id: @comment.id, type: "comment"
expect(response.status).to eq(302)
- expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "comment")).to be_truthy
+ expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
end
end
end
diff --git a/spec/helpers/report_helper_spec.rb b/spec/helpers/report_helper_spec.rb
index 1c3fa3b18..f7d6b2510 100644
--- a/spec/helpers/report_helper_spec.rb
+++ b/spec/helpers/report_helper_spec.rb
@@ -7,11 +7,11 @@ describe ReportHelper, type: :helper do
@comment = @user.comment!(@post, "welcome")
@post_report = @user.reports.create(
- item_id: @post.id, item_type: "post",
+ item_id: @post.id, item_type: "Post",
text: "offensive content"
)
@comment_report = @user.reports.create(
- item_id: @comment.id, item_type: "comment",
+ item_id: @comment.id, item_type: "Comment",
text: "offensive content"
)
end
diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb
index bdfc17d38..04e4bc85a 100644
--- a/spec/models/report_spec.rb
+++ b/spec/models/report_spec.rb
@@ -12,14 +12,12 @@ describe Report, :type => :model do
@bob_comment = @user.comment!(@bob_post, "welcome")
@valid_post_report = {
- :item_id => @bob_post.id,
- :item_type => 'post',
- :text => 'offensive content'
+ item_id: @bob_post.id, item_type: "Post",
+ text: "offensive content"
}
@valid_comment_report = {
- :item_id => @bob_comment.id,
- :item_type => 'comment',
- :text => 'offensive content'
+ item_id: @bob_comment.id, item_type: "Comment",
+ text: "offensive content"
}
end