Fix #4145: Unable to view deleted comments from post page.

Bug: if all the comments on a post were deleted then the deleted
comments wouldn't be visible to moderators.

This was because we assumed that if `last_commented_at` was nil it meant
that the post had no comments, but this was wrong. `last_commented_at`
only counts undeleted comments. It's reset to nil if all the commnets
have been deleted.
This commit is contained in:
evazion
2019-08-26 13:18:54 -05:00
parent fa37d7c156
commit a3d748e300
3 changed files with 53 additions and 3 deletions

View File

@@ -143,6 +143,56 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
assert_response :success
end
context "with only deleted comments" do
setup do
as(@user) { create(:comment, post: @post, is_deleted: true) }
end
should "not show deleted comments to regular members" do
get_auth post_path(@post), @user, params: { id: @post.id }
assert_response :success
assert_select "article.comment", 0
assert_select "a#show-all-comments-link", 0
assert_select "div.list-of-comments p", /There are no comments/
end
should "show deleted comments to moderators" do
mod = create(:mod_user)
get_auth post_path(@post), mod, params: { id: @post.id }
assert_response :success
assert_select "article.comment", 1
end
end
context "with only downvoted comments" do
should "not show thresholded comments" do
comment = as(@user) { create(:comment, post: @post, score: -10) }
get_auth post_path(@post), @user, params: { id: @post.id }
assert_response :success
assert_select "article.comment", 0
assert_select "a#show-all-comments-link", 1
assert_select "div.list-of-comments p", /There are no visible comments/
end
end
context "with a mix of comments" do
should "not show deleted or thresholded comments " do
as(@user) { create(:comment, post: @post, do_not_bump_post: true, body: "good") }
as(@user) { create(:comment, post: @post, do_not_bump_post: true, body: "bad", score: -10) }
as(@user) { create(:comment, post: @post, do_not_bump_post: true, body: "ugly", is_deleted: true) }
get_auth post_path(@post), @user, params: { id: @post.id }
assert_response :success
assert_select "article.comment", 1
assert_select "article.comment", /good/
assert_select "a#show-all-comments-link", 1
end
end
context "when the recommend service is enabled" do
setup do
@post2 = create(:post)