-
-<%= form_tag(delete_moderator_post_post_path, :style => "clear: both;", :class => "simple_form") do %>
- <% if @post.parent_id %>
-
-
-
- <% end %>
-
-
Note: If the reason you are planning to delete this post is because it is from a banned artist, please <%= link_to "ban", confirm_ban_moderator_post_post_path(@post) %> this post instead of deleting it.
<%= link_to "Delete", post, method: :delete, remote: true %>
<% end %>
<% if post.is_approvable? && !post.is_deleted? %>
diff --git a/config/routes.rb b/config/routes.rb
index 94b6878d6..ce3a273c1 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -13,9 +13,7 @@ Rails.application.routes.draw do
namespace :post do
resources :posts, :only => [:delete, :expunge, :confirm_delete] do
member do
- get :confirm_delete
post :expunge
- post :delete
get :confirm_move_favorites
post :move_favorites
get :confirm_ban
@@ -175,7 +173,7 @@ Rails.application.routes.draw do
end
resources :post_replacements, :only => [:index, :new, :create, :update]
resources :post_votes, only: [:index]
- resources :posts, only: [:index, :show, :update] do
+ resources :posts, only: [:index, :show, :update, :destroy] do
resources :events, :only => [:index], :controller => "post_events"
resources :replacements, :only => [:index, :new, :create], :controller => "post_replacements"
resource :artist_commentary, :only => [:index, :show] do
diff --git a/test/functional/moderator/post/posts_controller_test.rb b/test/functional/moderator/post/posts_controller_test.rb
index 8914baf72..9e5ead019 100644
--- a/test/functional/moderator/post/posts_controller_test.rb
+++ b/test/functional/moderator/post/posts_controller_test.rb
@@ -15,26 +15,6 @@ module Moderator
end
end
- context "confirm_delete action" do
- should "render" do
- get_auth confirm_delete_moderator_post_post_path(@post), @admin
- assert_response :success
- end
- end
-
- context "delete action" do
- should "render" do
- post_auth delete_moderator_post_post_path(@post), @admin, params: {:reason => "xxx", :format => "js", :commit => "Delete"}
- assert(@post.reload.is_deleted?)
- end
-
- should "work even if the deleter has flagged the post previously" do
- create(:post_flag, post: @post, creator: @admin)
- post_auth delete_moderator_post_post_path(@post), @admin, params: {:reason => "xxx", :format => "js", :commit => "Delete"}
- assert(@post.reload.is_deleted?)
- end
- end
-
context "confirm_move_favorites action" do
should "render" do
get_auth confirm_move_favorites_moderator_post_post_path(@post), @admin
diff --git a/test/functional/posts_controller_test.rb b/test/functional/posts_controller_test.rb
index 67b03454f..f3aeb2826 100644
--- a/test/functional/posts_controller_test.rb
+++ b/test/functional/posts_controller_test.rb
@@ -633,6 +633,43 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
end
end
+ context "destroy action" do
+ setup do
+ @approver = create(:approver)
+ end
+
+ should "delete the post" do
+ delete_auth post_path(@post), @approver, params: { commit: "Delete", post: { reason: "test" } }
+
+ assert_redirected_to @post
+ assert_equal(true, @post.reload.is_deleted?)
+ assert_equal("test", @post.flags.last.reason)
+ end
+
+ should "delete the post even if the deleter has flagged the post previously" do
+ create(:post_flag, post: @post, creator: @approver)
+ delete_auth post_path(@post), @approver, params: { commit: "Delete", post: { reason: "test" } }
+
+ assert_redirected_to @post
+ assert_equal(true, @post.reload.is_deleted?)
+ end
+
+ should "not delete the post if the user is unauthorized" do
+ delete_auth post_path(@post), @user, params: { commit: "Delete" }
+
+ assert_response 403
+ assert_equal(false, @post.is_deleted?)
+ end
+
+ should "render the delete post dialog for an xhr request" do
+ delete_auth post_path(@post), @approver, xhr: true
+
+ assert_response :success
+ assert_equal(false, @post.is_deleted?)
+ end
+
+ end
+
context "revert action" do
setup do
PostVersion.sqs_service.stubs(:merge?).returns(false)