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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user