Skip to content
Snippets Groups Projects
Commit 38ed1d85 authored by ArtOfCode-'s avatar ArtOfCode-
Browse files

Full close tests

parent 82c39205
No related merge requests found
......@@ -316,4 +316,66 @@ class PostsControllerTest < ActionController::TestCase
end
assert_equal 'success', JSON.parse(response.body)['status']
end
test 'close requires authentication' do
post :close, params: { id: posts(:question_one).id, reason_id: close_reasons(:not_good).id }
assert_response 302
assert_redirected_to new_user_session_path
end
test 'unprivileged user cannot close' do
sign_in users(:standard_user)
before_history = PostHistory.where(post: posts(:question_one)).count
post :close, params: { id: posts(:question_one).id, reason_id: close_reasons(:not_good).id }
after_history = PostHistory.where(post: posts(:question_one)).count
assert_response 403
assert_not_nil assigns(:post)
assert_equal before_history, after_history, 'PostHistory event incorrectly created on closure'
assert_nothing_raised do
JSON.parse(response.body)
end
assert_equal 'failed', JSON.parse(response.body)['status']
end
test 'cannot close a closed post' do
sign_in users(:closer)
before_history = PostHistory.where(post: posts(:closed)).count
post :close, params: { id: posts(:closed).id, reason_id: close_reasons(:not_good).id }
after_history = PostHistory.where(post: posts(:closed)).count
assert_response 400
assert_not_nil assigns(:post)
assert_equal before_history, after_history, 'PostHistory event incorrectly created on closure'
assert_nothing_raised do
JSON.parse(response.body)
end
assert_equal 'failed', JSON.parse(response.body)['status']
end
test 'close rejects nonexistent close reason' do
sign_in users(:closer)
before_history = PostHistory.where(post: posts(:question_one)).count
post :close, params: { id: posts(:question_one).id, reason_id: -999 }
after_history = PostHistory.where(post: posts(:question_one)).count
assert_response 404
assert_not_nil assigns(:post)
assert_equal before_history, after_history, 'PostHistory event incorrectly created on closure'
assert_nothing_raised do
JSON.parse(response.body)
end
assert_equal 'failed', JSON.parse(response.body)['status']
end
test 'close ensures other post exists if reason requires it' do
sign_in users(:closer)
before_history = PostHistory.where(post: posts(:question_one)).count
post :close, params: { id: posts(:question_one).id, reason_id: close_reasons(:duplicate) }
after_history = PostHistory.where(post: posts(:question_one)).count
assert_response 400
assert_not_nil assigns(:post)
assert_equal before_history, after_history, 'PostHistory event incorrectly created on closure'
assert_nothing_raised do
JSON.parse(response.body)
end
assert_equal 'failed', JSON.parse(response.body)['status']
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment