user feedbacks: replace permanent deletions with soft deletions.

* Add is_deleted flag.
* Allow mods to delete and undelete user feedbacks.
* Don't hide old name change feedbacks (these will be deleted instead).
This commit is contained in:
evazion
2019-12-23 00:02:54 -06:00
parent cd442d60af
commit b650558633
9 changed files with 60 additions and 78 deletions

View File

@@ -6,6 +6,7 @@ class UserFeedbacksControllerTest < ActionDispatch::IntegrationTest
@user = create(:user)
@critic = create(:gold_user)
@mod = create(:moderator_user)
@user_feedback = as(@critic) { create(:user_feedback, user: @user) }
end
context "new action" do
@@ -16,12 +17,6 @@ class UserFeedbacksControllerTest < ActionDispatch::IntegrationTest
end
context "edit action" do
setup do
as(@critic) do
@user_feedback = create(:user_feedback, user: @user)
end
end
should "render" do
get_auth edit_user_feedback_path(@user_feedback), @critic
assert_response :success
@@ -29,12 +24,6 @@ class UserFeedbacksControllerTest < ActionDispatch::IntegrationTest
end
context "index action" do
setup do
as(@critic) do
@user_feedback = create(:user_feedback, user: @user)
end
end
should "render" do
get_auth user_feedbacks_path, @user
assert_response :success
@@ -58,44 +47,26 @@ class UserFeedbacksControllerTest < ActionDispatch::IntegrationTest
context "update action" do
should "update the feedback" do
as(@critic) do
@feedback = create(:user_feedback, user: @user, category: "negative")
end
put_auth user_feedback_path(@feedback), @critic, params: { id: @feedback.id, user_feedback: { category: "positive" }}
put_auth user_feedback_path(@user_feedback), @critic, params: { user_feedback: { category: "positive" }}
assert_redirected_to(@feedback)
assert("positive", @feedback.reload.category)
end
end
context "destroy action" do
setup do
as(@critic) do
@user_feedback = create(:user_feedback, user: @user)
end
end
should "delete a feedback" do
assert_difference "UserFeedback.count", -1 do
delete_auth user_feedback_path(@user_feedback), @critic
end
assert_redirected_to(@user_feedback)
assert("positive", @user_feedback.reload.category)
end
context "by a moderator" do
should "allow deleting feedbacks given to other users" do
assert_difference "UserFeedback.count", -1 do
delete_auth user_feedback_path(@user_feedback), @mod
end
put_auth user_feedback_path(@user_feedback), @mod, params: { user_feedback: { is_deleted: "true" }}
assert_redirected_to @user_feedback
assert(@user_feedback.reload.is_deleted?)
end
should "not allow deleting feedbacks given to themselves" do
as(@critic) do
@user_feedback = create(:user_feedback, user: @mod)
end
@user_feedback = as(@critic) { create(:user_feedback, user: @mod) }
put_auth user_feedback_path(@user_feedback), @mod, params: { id: @user_feedback.id, user_feedback: { is_deleted: "true" }}
assert_difference "UserFeedback.count", 0 do
delete_auth user_feedback_path(@user_feedback), @mod
end
assert_response 403
refute(@user_feedback.reload.is_deleted?)
end
end
end