mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 14:20:15 +00:00
Fix several esoteric errors related to AJAX unit tests for comments:
* `wp_ajax_get_comments()` relies on the `$post_id` global - even though `$_POST['p']` is passed to every action in the test methods. If `$post_id` is still lingering in between tests and doesn't match `p` in the request, the cap check might pass while the queries for comments will blow up. I added `unset( $GLOBALS['post_id'] )` to `Tests_Ajax_GetComments::setUp()`. * If the global `$post_id` is empty, but `$_REQUEST['p']` is not, `$post_id` is now set to `absint( $_REQUEST['p'] )` and sanity-checked in `wp_ajax_get_comments()`. * `map_meta_cap()` always assumes that `get_comment()` succeeds when checking for the `edit_comment` cap. It doesn't. I added sanity checks in a few places where it will break early if `get_post()` or `get_comment()` are empty. * `wp_update_comment()` always assumes `get_comment()` succeeds. It doesn't. I added a check for empty. All AJAX unit tests run and pass in debug mode. All general unit tests pass against these changes. Fixes #25282. git-svn-id: https://develop.svn.wordpress.org/trunk@25438 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -131,7 +131,7 @@ abstract class WP_Ajax_UnitTestCase extends WP_UnitTestCase {
|
||||
$this->_last_response .= ob_get_clean();
|
||||
|
||||
if ( '' === $this->_last_response ) {
|
||||
if ( is_scalar( $message) ) {
|
||||
if ( is_scalar( $message ) ) {
|
||||
throw new WPAjaxDieStopException( (string) $message );
|
||||
} else {
|
||||
throw new WPAjaxDieStopException( '0' );
|
||||
|
||||
@@ -38,6 +38,8 @@ class Tests_Ajax_GetComments extends WP_Ajax_UnitTestCase {
|
||||
|
||||
$post_id = $this->factory->post->create();
|
||||
$this->_no_comment_post = get_post( $post_id );
|
||||
|
||||
unset( $GLOBALS['post_id'] );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user