diff --git a/app/assets/images/icons/postreport.png b/app/assets/images/icons/report.png
similarity index 100%
rename from app/assets/images/icons/postreport.png
rename to app/assets/images/icons/report.png
diff --git a/app/assets/javascripts/app/models/post_report.js b/app/assets/javascripts/app/models/post_report.js
deleted file mode 100644
index 7a9705bb5..000000000
--- a/app/assets/javascripts/app/models/post_report.js
+++ /dev/null
@@ -1,3 +0,0 @@
-app.models.PostReport = Backbone.Model.extend({
- urlRoot: '/post_report'
-});
diff --git a/app/assets/javascripts/app/models/report.js b/app/assets/javascripts/app/models/report.js
new file mode 100644
index 000000000..594c7565b
--- /dev/null
+++ b/app/assets/javascripts/app/models/report.js
@@ -0,0 +1,8 @@
+app.models.Report = Backbone.Model.extend({
+ urlRoot: '/report',
+
+ getReason: function() {
+ return prompt(Diaspora.I18n.t('report_prompt'), Diaspora.I18n.t('report_prompt_default'));
+ }
+
+});
diff --git a/app/assets/javascripts/app/views/comment_view.js b/app/assets/javascripts/app/views/comment_view.js
index 8ed7ff48a..a02676fff 100644
--- a/app/assets/javascripts/app/views/comment_view.js
+++ b/app/assets/javascripts/app/views/comment_view.js
@@ -5,7 +5,8 @@ app.views.Comment = app.views.Content.extend({
events : function() {
return _.extend({}, app.views.Content.prototype.events, {
- "click .comment_delete": "destroyModel"
+ "click .comment_delete": "destroyModel",
+ "click .comment_report": "report"
});
},
@@ -31,6 +32,20 @@ app.views.Comment = app.views.Content.extend({
canRemove : function() {
return app.currentUser.authenticated() && (this.ownComment() || this.postOwner())
+ },
+
+ report: function(evt) {
+ if(evt) { evt.preventDefault(); }
+ var report = new app.models.Report();
+ var msg = report.getReason();
+ if (msg !== null) {
+ var id = this.model.id;
+ var type = $(evt.currentTarget).data("type");
+ report.fetch({
+ data: { id: id, type: type, text: msg },
+ type: 'POST'
+ });
+ }
}
});
diff --git a/app/assets/javascripts/app/views/feedback_view.js b/app/assets/javascripts/app/views/feedback_view.js
index d7f84a653..62e898f04 100644
--- a/app/assets/javascripts/app/views/feedback_view.js
+++ b/app/assets/javascripts/app/views/feedback_view.js
@@ -6,7 +6,8 @@ app.views.Feedback = app.views.Base.extend({
events: {
"click *[rel='auth-required']" : "requireAuth",
"click .like" : "toggleLike",
- "click .reshare" : "resharePost"
+ "click .reshare" : "resharePost",
+ "click .post_report" : "report"
},
tooltipSelector : ".label",
@@ -44,5 +45,19 @@ app.views.Feedback = app.views.Base.extend({
if( app.currentUser.authenticated() ) { return }
alert("you must be logged in to do that!")
return false;
+ },
+
+ report: function(evt) {
+ if(evt) { evt.preventDefault(); }
+ var report = new app.models.Report();
+ var msg = report.getReason();
+ if (msg !== null) {
+ var id = this.model.id;
+ var type = $(evt.currentTarget).data("type");
+ report.fetch({
+ data: { id: id, type: type, text: msg },
+ type: 'POST'
+ });
+ }
}
});
diff --git a/app/assets/javascripts/app/views/post_view.js b/app/assets/javascripts/app/views/post_view.js
index 7d45e6bdf..9aef82728 100644
--- a/app/assets/javascripts/app/views/post_view.js
+++ b/app/assets/javascripts/app/views/post_view.js
@@ -13,5 +13,20 @@ app.views.Post = app.views.Base.extend({
showPost : function() {
return (app.currentUser.get("showNsfw")) || !this.model.get("nsfw")
+ },
+
+ report: function(evt) {
+ if(evt) { evt.preventDefault(); }
+ var report = new app.models.Report();
+ var msg = report.getReason();
+ if (msg !== null) {
+ var id = this.model.id;
+ var type = $(evt.currentTarget).data("type");
+ report.fetch({
+ data: { id: id, type: type, text: msg },
+ type: 'POST'
+ });
+ }
}
+
});
diff --git a/app/assets/javascripts/app/views/stream_post_views.js b/app/assets/javascripts/app/views/stream_post_views.js
index fb1d846d4..ef557362d 100644
--- a/app/assets/javascripts/app/views/stream_post_views.js
+++ b/app/assets/javascripts/app/views/stream_post_views.js
@@ -20,7 +20,7 @@ app.views.StreamPost = app.views.Post.extend({
"click .remove_post": "destroyModel",
"click .hide_post": "hidePost",
- "click .post_report": "postReport",
+ "click .post_report": "report",
"click .block_user": "blockUser"
},
@@ -108,21 +108,6 @@ app.views.StreamPost = app.views.Post.extend({
this.remove();
},
- postReport : function(evt) {
- if(evt) { evt.preventDefault(); }
- var text = prompt(Diaspora.I18n.t('post_report_prompt'),
- Diaspora.I18n.t('post_report_prompt_default'));
-
- var postReport = new app.models.PostReport();
- postReport.fetch({
- data: {
- post_id: this.model.id,
- text: text
- },
- type: 'POST'
- });
- },
-
focusCommentTextarea: function(evt){
evt.preventDefault();
this.$(".new_comment_form_wrapper").removeClass("hidden");
diff --git a/app/assets/stylesheets/application.css.sass b/app/assets/stylesheets/application.css.sass
index 96184c315..52199d047 100644
--- a/app/assets/stylesheets/application.css.sass
+++ b/app/assets/stylesheets/application.css.sass
@@ -17,8 +17,8 @@
@import 'facebox'
@import 'aspects'
@import 'popover'
-@import 'post_report'
@import 'stream_element'
+@import 'report'
/* ====== media ====== */
.media
@@ -211,10 +211,10 @@ ul.as-selections
:z-index 6
:float right
- .post_report
+ .post_report, .comment_report
:display inline-block
- .icons-postreport
+ .icons-report
:height 14px
:width 14px
diff --git a/app/assets/stylesheets/entypo.css.scss b/app/assets/stylesheets/entypo.css.scss
index a2d2a3774..615ed4e28 100644
--- a/app/assets/stylesheets/entypo.css.scss
+++ b/app/assets/stylesheets/entypo.css.scss
@@ -141,6 +141,7 @@
&.globe:before { content: '\1f30e'; } /* 1f30e */
&.graduation-cap:before { content: '\1f393 '; } /* 1f393 */
&.heart-empty:before { content: '\2661'; } /* 2661 */
+ &.report:before { content: '\21'; } /* 21 */
&.heart:before { content: '\2665'; } /* 2665 */
&.help:before { content: '\2753'; } /* 2753 */
&.home:before { content: '\2302'; } /* 2302 */
diff --git a/app/assets/stylesheets/post_report.css.scss b/app/assets/stylesheets/report.css.scss
similarity index 71%
rename from app/assets/stylesheets/post_report.css.scss
rename to app/assets/stylesheets/report.css.scss
index ba865f9da..6fa29ce07 100644
--- a/app/assets/stylesheets/post_report.css.scss
+++ b/app/assets/stylesheets/report.css.scss
@@ -1,4 +1,4 @@
-#post_report {
+#report {
padding-top: 2em;
span {
display: block;
@@ -11,6 +11,8 @@
}
.clear {
clear: both;
+ border-bottom: 1px solid #808080;
padding-bottom: 1em;
+ margin-bottom: 1em;
}
}
diff --git a/app/assets/stylesheets/single-post-view.css.scss b/app/assets/stylesheets/single-post-view.css.scss
index 2fd30c888..056863407 100644
--- a/app/assets/stylesheets/single-post-view.css.scss
+++ b/app/assets/stylesheets/single-post-view.css.scss
@@ -61,6 +61,12 @@
i.comment:hover {
color: #424242;
}
+ i.report.gray:hover {
+ color: $red;
+ }
+ i.report.red:hover {
+ color: #f55f5a;
+ }
i.heart.gray:hover {
color: $red;
}
diff --git a/app/assets/templates/comment_tpl.jst.hbs b/app/assets/templates/comment_tpl.jst.hbs
index e87eb2eeb..71be0bd4e 100644
--- a/app/assets/templates/comment_tpl.jst.hbs
+++ b/app/assets/templates/comment_tpl.jst.hbs
@@ -6,13 +6,17 @@
diff --git a/app/assets/templates/stream-element_tpl.jst.hbs b/app/assets/templates/stream-element_tpl.jst.hbs
index 21ed75fd4..45a73f9a0 100644
--- a/app/assets/templates/stream-element_tpl.jst.hbs
+++ b/app/assets/templates/stream-element_tpl.jst.hbs
@@ -10,8 +10,8 @@
{{#if loggedIn}}
{{#unless authorIsCurrentUser}}
-
-
+
+
diff --git a/app/controllers/post_report_controller.rb b/app/controllers/post_report_controller.rb
deleted file mode 100644
index cd8dba827..000000000
--- a/app/controllers/post_report_controller.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-class PostReportController < ApplicationController
- before_filter :authenticate_user!
- before_filter :redirect_unless_admin, :except => [:create]
-
- def index
- @post_report = PostReport.where(reviewed: false).all
- end
-
- def update
- if PostReport.exists?(post_id: params[:id])
- mark_as_reviewed
- end
- redirect_to :action => :index and return
- end
-
- def destroy
- if Post.exists?(params[:id])
- delete_post
- mark_as_reviewed
- end
- redirect_to :action => :index and return
- end
-
- def create
- username = current_user.username
- unless PostReport.where(post_id: params[:post_id]).exists?(user_id: username)
- post = PostReport.new(
- :post_id => params[:post_id],
- :user_id => username,
- :text => params[:text])
- result = post.save
- status(( 200 if result ) || ( 422 if !result ))
- else
- status(409)
- end
- end
-
- private
- def delete_post
- post = Post.find(params[:id])
- current_user.retract(post)
- flash[:notice] = I18n.t 'post_report.status.destroyed'
- end
-
- def mark_as_reviewed id = params[:id]
- posts = PostReport.where(post_id: id)
- posts.each do |post|
- post.update_attributes(reviewed: true)
- end
- flash[:notice] = I18n.t 'post_report.status.marked'
- end
-
- def status(code)
- if code == 200
- flash[:notice] = I18n.t 'post_report.status.created'
- else
- flash[:error] = I18n.t 'post_report.status.failed'
- end
- render :nothing => true, :status => code
- end
-end
diff --git a/app/controllers/report_controller.rb b/app/controllers/report_controller.rb
new file mode 100644
index 000000000..a5dcef21d
--- /dev/null
+++ b/app/controllers/report_controller.rb
@@ -0,0 +1,67 @@
+class ReportController < ApplicationController
+ before_filter :authenticate_user!
+ before_filter :redirect_unless_admin, :except => [:create]
+
+ def index
+ @report = Report.where(reviewed: false).all
+ end
+
+ def update
+ if Report.where(post_type: params[:type]).exists?(post_id: params[:id])
+ mark_as_reviewed
+ end
+ redirect_to :action => :index and return
+ end
+
+ def destroy
+ if (params[:type].eql? "post")
+ if Post.exists?(params[:id])
+ delete_post
+ end
+ elsif (params[:type].eql? "comment")
+ if Comment.exists?(params[:id])
+ delete_comment
+ end
+ end
+ redirect_to :action => :index and return
+ end
+
+ def create
+ code = 400
+ username = current_user.username
+ post = Report.new(
+ :post_id => params[:id],
+ :post_type => params[:type],
+ :user_id => username,
+ :text => params[:text])
+ unless Report.where("post_id = ? AND post_type = ?", params[:id], params[:type]).exists?(user_id: username)
+ result = post.save
+ code = 200 if result
+ end
+ render :nothing => true, :status => code
+ end
+
+ private
+ def delete_post
+ post = Post.find(params[:id])
+ current_user.retract(post)
+ mark_as_reviewed
+ flash[:notice] = I18n.t 'report.status.destroyed'
+ end
+
+ def delete_comment
+ comment = Comment.find(params[:id])
+ #current_user.retract(comment)
+ comment.destroy
+ mark_as_reviewed
+ flash[:notice] = I18n.t 'report.status.destroyed'
+ end
+
+ def mark_as_reviewed
+ posts = Report.where("post_id = ? AND post_type = ?", params[:id], params[:type])
+ posts.each do |post|
+ post.update_attributes(reviewed: true)
+ end
+ flash[:notice] = I18n.t 'report.status.marked'
+ end
+end
diff --git a/app/helpers/report_helper.rb b/app/helpers/report_helper.rb
new file mode 100644
index 000000000..91b94e49f
--- /dev/null
+++ b/app/helpers/report_helper.rb
@@ -0,0 +1,13 @@
+# Copyright (c) 2012, Diaspora Inc. This file is
+# licensed under the Affero General Public License version 3 or later. See
+# the COPYRIGHT file.
+
+module ReportHelper
+ def report_content(id, type)
+ if type.eql? "post"
+ raw t('report.post_label', title: link_to(post_page_title(Post.find_by_id(id)), post_path(id)))
+ elsif type.eql? "comment"
+ raw t('report.comment_label', data: comment_message(Comment.find_by_id(id)))
+ end
+ end
+end
diff --git a/app/mailers/post_report_mailer.rb b/app/mailers/post_report_mailer.rb
deleted file mode 100644
index 46b6737cc..000000000
--- a/app/mailers/post_report_mailer.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class PostReportMailer < ActionMailer::Base
- default :from => AppConfig.mail.sender_address
-
- def new_report
- Role.admins.each do |role|
- email = User.find_by_id(role.person_id).email
- format(email).deliver
- end
- end
-
- private
- def format(email)
- mail(to: email, subject: I18n.t('notifier.post_report_email.subject')) do |format|
- format.text { render 'post_report/post_report_email' }
- format.html { render 'post_report/post_report_email' }
- end
- end
-end
diff --git a/app/mailers/report_mailer.rb b/app/mailers/report_mailer.rb
new file mode 100644
index 000000000..e7dbb911c
--- /dev/null
+++ b/app/mailers/report_mailer.rb
@@ -0,0 +1,26 @@
+class ReportMailer < ActionMailer::Base
+ default :from => AppConfig.mail.sender_address
+
+ def new_report(type, id)
+ url = AppConfig.pod_uri.to_s
+ url << report_index_path
+ resource = Hash[
+ :subject => I18n.t('notifier.report_email.subject', :type => type),
+ :url => url,
+ :type => type,
+ :id => id
+ ]
+ Role.admins.each do |role|
+ resource[:email] = User.find_by_id(role.person_id).email
+ format(resource).deliver
+ end
+ end
+
+ private
+ def format(resource)
+ mail(to: resource[:email], subject: resource[:subject]) do |format|
+ format.html { render 'report/report_email', :locals => { :resource => resource } }
+ format.text { render 'report/report_email', :locals => { :resource => resource } }
+ end
+ end
+end
diff --git a/app/models/post_report.rb b/app/models/report.rb
similarity index 53%
rename from app/models/post_report.rb
rename to app/models/report.rb
index a521162ad..b47a006dc 100644
--- a/app/models/post_report.rb
+++ b/app/models/report.rb
@@ -1,15 +1,16 @@
-class PostReport < ActiveRecord::Base
+class Report < ActiveRecord::Base
validates :user_id, presence: true
validates :post_id, presence: true
+ validates :post_type, presence: true
belongs_to :user
belongs_to :post
- has_many :post_reports
+ has_many :reports
after_create :send_report_notification
def send_report_notification
- Workers::Mail::PostReportWorker.perform_async
+ Workers::Mail::ReportWorker.perform_async(self.post_type, self.post_id)
end
end
diff --git a/app/views/admins/_admin_bar.haml b/app/views/admins/_admin_bar.haml
index dff8955fa..cb6ac9b34 100644
--- a/app/views/admins/_admin_bar.haml
+++ b/app/views/admins/_admin_bar.haml
@@ -5,7 +5,7 @@
%li= link_to t('.user_search'), user_search_path
%li= link_to t('.weekly_user_stats'), weekly_user_stats_path
%li= link_to t('.pod_stats'), pod_stats_path
- %li= link_to t('.post_report'), post_report_index_path
+ %li= link_to t('.report'), report_index_path
%li= link_to t('.correlations'), correlations_path
%li= link_to t('.sidekiq_monitor'), sidekiq_path
diff --git a/app/views/post_report/index.html.haml b/app/views/post_report/index.html.haml
deleted file mode 100644
index 538ff39b0..000000000
--- a/app/views/post_report/index.html.haml
+++ /dev/null
@@ -1,21 +0,0 @@
-.span-24
- = render :partial => 'admins/admin_bar'
-
-.span-24.last
- %h1
- = t('post_report.title')
- %div#post_report
- - @post_report.each do |report|
- %div.content
- %span
- = raw t('post_report.post_label', title: link_to(post_page_title(Post.find_by_id(report.post_id)), post_path(report.post_id)))
- %span
- = raw t('post_report.reported_label', person: link_to(report.user_id, user_profile_path(report.user_id)))
- %span
- = t('post_report.reason_label', text: report.text)
- %div.options
- %span
- = link_to t('post_report.review_link'), post_report_path(report.post_id), method: :put
- %span
- = link_to t('post_report.delete_link'), post_report_path(report.post_id), method: :delete
- %div.clear
diff --git a/app/views/post_report/post_report_email.markerb b/app/views/post_report/post_report_email.markerb
deleted file mode 100644
index fb4b688f1..000000000
--- a/app/views/post_report/post_report_email.markerb
+++ /dev/null
@@ -1,2 +0,0 @@
-<%= t('notifier.post_report_email.body') %>
-
diff --git a/app/views/report/index.html.haml b/app/views/report/index.html.haml
new file mode 100644
index 000000000..8da7c73bd
--- /dev/null
+++ b/app/views/report/index.html.haml
@@ -0,0 +1,21 @@
+.span-24
+ = render :partial => 'admins/admin_bar'
+
+.span-24.last
+ %h1
+ = t('report.title')
+ %div#report
+ - @report.each do |r|
+ %div.content
+ %span
+ = report_content(r.post_id, r.post_type)
+ %span
+ = raw t('report.reported_label', person: link_to(r.user_id, user_profile_path(r.user_id)))
+ %span
+ = t('report.reason_label', text: r.text)
+ %div.options
+ %span
+ = link_to t('report.review_link'), report_path(r.post_id, :type => r.post_type), method: :put
+ %span
+ = link_to t('report.delete_link'), report_path(r.post_id, :type => r.post_type), method: :delete
+ %div.clear
diff --git a/app/views/report/report_email.markerb b/app/views/report/report_email.markerb
new file mode 100644
index 000000000..ba787d56a
--- /dev/null
+++ b/app/views/report/report_email.markerb
@@ -0,0 +1,2 @@
+<%= t('notifier.report_email.body', url: resource[:url], type: resource[:type], id: resource[:id]) %>
+
diff --git a/app/workers/mail/post_report_worker.rb b/app/workers/mail/post_report_worker.rb
deleted file mode 100644
index a3f841942..000000000
--- a/app/workers/mail/post_report_worker.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module Workers
- module Mail
- class PostReportWorker < Base
- sidekiq_options queue: :mail
-
- def perform
- PostReportMailer.new_report
- end
- end
- end
-end
-
diff --git a/app/workers/mail/report_worker.rb b/app/workers/mail/report_worker.rb
new file mode 100644
index 000000000..92c201dcb
--- /dev/null
+++ b/app/workers/mail/report_worker.rb
@@ -0,0 +1,12 @@
+module Workers
+ module Mail
+ class ReportWorker < Base
+ sidekiq_options queue: :mail
+
+ def perform(type, id)
+ ReportMailer.new_report(type, id)
+ end
+ end
+ end
+end
+
diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml
index 60dc8c116..e5a440f76 100644
--- a/config/locales/diaspora/en.yml
+++ b/config/locales/diaspora/en.yml
@@ -99,7 +99,7 @@ en:
user_search: "User Search"
weekly_user_stats: "Weekly User Stats"
pod_stats: "Pod Stats"
- post_report: "Reported Posts"
+ report: "Reports"
correlations: "Correlations"
sidekiq_monitor: "Sidekiq monitor"
correlations:
@@ -736,9 +736,23 @@ en:
confirm_email:
subject: "Please activate your new email address %{unconfirmed_email}"
click_link: "To activate your new email address %{unconfirmed_email}, please follow this link:"
- post_report_email:
- subject: "A new post was marked as offensive"
- body: "Please review as soon as possible!"
+ report_email:
+ subject: "A new %{type} was marked as offensive"
+ body: |-
+ Hello,
+
+ the %{type} with ID %{id} was marked as offensive.
+
+ [%{url}][1]
+
+ Please review as soon as possible!
+
+
+ Cheers,
+
+ The diaspora* email robot!
+
+ [1]: %{url}
accept_invite: "Accept Your diaspora* invite!"
invited_you: "%{name} invited you to diaspora*"
invite:
@@ -868,9 +882,10 @@ en:
other: "%{count} photos by %{author}"
reshare_by: "Reshare by %{author}"
- post_report:
- title: "Marked Reports Overview"
+ report:
+ title: "Reports Overview"
post_label: "Post: %{title}"
+ comment_label: "Comment:
%{data}"
reported_label: "Reported by %{person}"
reason_label: "Reason: %{text}"
review_link: "Mark as reviewed"
diff --git a/config/locales/javascript/javascript.en.yml b/config/locales/javascript/javascript.en.yml
index 5a619206e..e10959db6 100644
--- a/config/locales/javascript/javascript.en.yml
+++ b/config/locales/javascript/javascript.en.yml
@@ -6,11 +6,11 @@
en:
javascripts:
confirm_dialog: "Are you sure?"
- post_report_prompt: "Please enter a reason:"
- post_report_prompt_default: "offensive content"
+ report_prompt: "Please enter a reason:"
+ report_prompt_default: "offensive content"
delete: "Delete"
ignore: "Ignore"
- post_report: "Report"
+ report: "Report"
ignore_user: "Ignore this user?"
and: "and"
comma: ","
diff --git a/config/routes.rb b/config/routes.rb
index 39b66432e..dc659bbbb 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -5,7 +5,7 @@
require 'sidekiq/web'
Diaspora::Application.routes.draw do
- resources :post_report, :except => [:edit]
+ resources :report, :except => [:edit, :new]
if Rails.env.production?
mount RailsAdmin::Engine => '/admin_panel', :as => 'rails_admin'
diff --git a/db/migrate/20140121132816_add_post_type_to_post_report.rb b/db/migrate/20140121132816_add_post_type_to_post_report.rb
new file mode 100644
index 000000000..be50eca0a
--- /dev/null
+++ b/db/migrate/20140121132816_add_post_type_to_post_report.rb
@@ -0,0 +1,5 @@
+class AddPostTypeToPostReport < ActiveRecord::Migration
+ def change
+ add_column :post_reports, :post_type, :string, :null => false, :after => :post_id
+ end
+end
diff --git a/db/migrate/20140214104217_rename_post_report_to_report.rb b/db/migrate/20140214104217_rename_post_report_to_report.rb
new file mode 100644
index 000000000..2d477491e
--- /dev/null
+++ b/db/migrate/20140214104217_rename_post_report_to_report.rb
@@ -0,0 +1,8 @@
+class RenamePostReportToReport < ActiveRecord::Migration
+ def self.up
+ rename_table :post_reports, :reports
+ end
+ def self.down
+ rename_table :reports, :post_reports
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 97f7cb6c2..b483d9b03 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -410,6 +410,18 @@ ActiveRecord::Schema.define(:version => 20140308154022) do
add_index "rails_admin_histories", ["item", "table", "month", "year"], :name => "index_rails_admin_histories"
+ create_table "reports", :force => true do |t|
+ t.integer "post_id", :null => false
+ t.string "post_type", :null => false
+ t.string "user_id"
+ t.boolean "reviewed", :default => false
+ t.text "text"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ add_index "reports", ["post_id"], :name => "index_post_reports_on_post_id"
+
create_table "roles", :force => true do |t|
t.integer "person_id"
t.string "name"
diff --git a/spec/controllers/post_report_controller_spec.rb b/spec/controllers/post_report_controller_spec.rb
deleted file mode 100644
index 513e19164..000000000
--- a/spec/controllers/post_report_controller_spec.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'spec_helper'
-
-describe PostReportController do
- before do
- sign_in alice
- @message = alice.post(:status_message, :text => "hey", :to => alice.aspects.first.id)
- end
-
- describe '#index' do
- context 'admin not signed in' do
- it 'is behind redirect_unless_admin' do
- get :index
- response.should redirect_to stream_path
- end
- end
-
- context 'admin signed in' do
- before do
- Role.add_admin(alice.person)
- end
- it 'succeeds and renders index' do
- get :index
- response.should render_template('index')
- end
- end
- end
-
- describe '#create' do
- context 'report offensive content' do
- it 'succeeds' do
- put :create, :post_id => @message.id, :text => 'offensive content'
- response.status.should == 200
- PostReport.exists?(:post_id => @message.id).should be_true
- end
- end
- end
-
- describe '#update' do
- context 'mark report as user' do
- it 'is behind redirect_unless_admin' do
- put :update, :id => @message.id
- response.should redirect_to stream_path
- PostReport.where(:reviewed => false, :post_id => @message.id).should be_true
- end
- end
-
- context 'mark report as admin' do
- before do
- Role.add_admin(alice.person)
- end
- it 'succeeds' do
- put :update, :id => @message.id
- response.status.should == 302
- PostReport.where(:reviewed => true, :post_id => @message.id).should be_true
- end
- end
- end
-
- describe '#destroy' do
- context 'destroy post as user' do
- it 'is behind redirect_unless_admin' do
- delete :destroy, :id => @message.id
- response.should redirect_to stream_path
- PostReport.where(:reviewed => false, :post_id => @message.id).should be_true
- end
- end
-
- context 'destroy post as admin' do
- before do
- Role.add_admin(alice.person)
- end
- it 'succeeds' do
- delete :destroy, :id => @message.id
- response.status.should == 302
- PostReport.where(:reviewed => true, :post_id => @message.id).should be_true
- end
- end
- end
-end
diff --git a/spec/controllers/report_controller_spec.rb b/spec/controllers/report_controller_spec.rb
new file mode 100644
index 000000000..614dc1b45
--- /dev/null
+++ b/spec/controllers/report_controller_spec.rb
@@ -0,0 +1,126 @@
+require 'spec_helper'
+
+describe ReportController do
+ before do
+ sign_in alice
+ @message = alice.post(:status_message, :text => "hey", :to => alice.aspects.first.id)
+ @comment = alice.comment!(@message, "flying pigs, everywhere")
+ end
+
+ describe '#index' do
+ context 'admin not signed in' do
+ it 'is behind redirect_unless_admin' do
+ get :index
+ response.should redirect_to stream_path
+ end
+ end
+
+ context 'admin signed in' do
+ before do
+ Role.add_admin(alice.person)
+ end
+ it 'succeeds and renders index' do
+ get :index
+ response.should render_template('index')
+ end
+ end
+ end
+
+ describe '#create' do
+ let(:comment_hash) {
+ {:text =>"facebook, is that you?",
+ :post_id =>"#{@post.id}"}
+ }
+
+ context 'report offensive post' do
+ it 'succeeds' do
+ put :create, :id => @message.id, :type => 'post', :text => 'offensive content'
+ response.status.should == 200
+ Report.exists?(:post_id => @message.id, :post_type => 'post').should be_true
+ end
+ end
+ context 'report offensive comment' do
+ it 'succeeds' do
+ put :create, :id => @comment.id, :type => 'comment', :text => 'offensive content'
+ response.status.should == 200
+ Report.exists?(:post_id => @comment.id, :post_type => 'comment').should be_true
+ end
+ end
+ end
+
+ describe '#update' do
+ context 'mark post report as user' do
+ it 'is behind redirect_unless_admin' do
+ put :update, :id => @message.id, :type => 'post'
+ response.should redirect_to stream_path
+ Report.where(:reviewed => false, :post_id => @message.id, :post_type => 'post').should be_true
+ end
+ end
+ context 'mark comment report as user' do
+ it 'is behind redirect_unless_admin' do
+ put :update, :id => @comment.id, :type => 'comment'
+ response.should redirect_to stream_path
+ Report.where(:reviewed => false, :post_id => @comment.id, :post_type => 'comment').should be_true
+ end
+ end
+
+ context 'mark post report as admin' do
+ before do
+ Role.add_admin(alice.person)
+ end
+ it 'succeeds' do
+ put :update, :id => @message.id, :type => 'post'
+ response.status.should == 302
+ Report.where(:reviewed => true, :post_id => @message.id, :post_type => 'post').should be_true
+ end
+ end
+ context 'mark comment report as admin' do
+ before do
+ Role.add_admin(alice.person)
+ end
+ it 'succeeds' do
+ put :update, :id => @comment.id, :type => 'comment'
+ response.status.should == 302
+ Report.where(:reviewed => true, :post_id => @comment.id, :post_type => 'comment').should be_true
+ end
+ end
+ end
+
+ describe '#destroy' do
+ context 'destroy post as user' do
+ it 'is behind redirect_unless_admin' do
+ delete :destroy, :id => @message.id, :type => 'post'
+ response.should redirect_to stream_path
+ Report.where(:reviewed => false, :post_id => @message.id, :post_type => 'post').should be_true
+ end
+ end
+ context 'destroy comment as user' do
+ it 'is behind redirect_unless_admin' do
+ delete :destroy, :id => @comment.id, :type => 'comment'
+ response.should redirect_to stream_path
+ Report.where(:reviewed => false, :post_id => @comment.id, :post_type => 'comment').should be_true
+ end
+ end
+
+ context 'destroy post as admin' do
+ before do
+ Role.add_admin(alice.person)
+ end
+ it 'succeeds' do
+ delete :destroy, :id => @message.id, :type => 'post'
+ response.status.should == 302
+ Report.where(:reviewed => true, :post_id => @message.id, :post_type => 'post').should be_true
+ end
+ end
+ context 'destroy comment as admin' do
+ before do
+ Role.add_admin(alice.person)
+ end
+ it 'succeeds' do
+ delete :destroy, :id => @comment.id, :type => 'comment'
+ response.status.should == 302
+ Report.where(:reviewed => true, :post_id => @comment.id, :post_type => 'comment').should be_true
+ end
+ end
+ end
+end