Docs: Improve documentation for `phpunit/includes/abstract-testcase.php`.

Props andizer.
Fixes #46499.

git-svn-id: https://develop.svn.wordpress.org/trunk@44902 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2019-03-15 12:01:15 +00:00
parent 5e04716bfe
commit 981ed3fbc6
1 changed files with 104 additions and 8 deletions

View File

@ -46,6 +46,11 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $factory;
}
/**
* Retrieves the name of the class the static method is called in.
*
* @return string The class name.
*/
public static function get_called_class() {
if ( function_exists( 'get_called_class' ) ) {
return get_called_class();
@ -61,6 +66,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $backtrace[2]['class'];
}
/**
* Runs the routine before setting up all tests.
*/
public static function setUpBeforeClass() {
global $wpdb;
@ -82,6 +90,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
self::commit_transaction();
}
/**
* Runs the routine after all tests have been run.
*/
public static function tearDownAfterClass() {
parent::tearDownAfterClass();
@ -99,6 +110,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
self::commit_transaction();
}
/**
* Runs the routine before each test is executed.
*/
public function setUp() {
set_time_limit( 0 );
@ -165,6 +179,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
wp_set_current_user( 0 );
}
/**
* Cleans the global scope (e.g `$_GET` and `$_POST`).
*/
public function clean_up_global_scope() {
$_GET = array();
$_POST = array();
@ -269,7 +286,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @global array $wp_actions
* @global array $wp_current_filter
* @global array $wp_filter
* @return void
*/
protected function _backup_hooks() {
$globals = array( 'wp_actions', 'wp_current_filter' );
@ -289,7 +305,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @global array $wp_actions
* @global array $wp_current_filter
* @global array $wp_filter
* @return void
*/
protected function _restore_hooks() {
$globals = array( 'wp_actions', 'wp_current_filter' );
@ -306,6 +321,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
}
}
/**
* Flushes the WordPress object cache.
*/
public static function flush_cache() {
global $wp_object_cache;
$wp_object_cache->group_ops = array();
@ -341,6 +359,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
}
}
/**
* Starts a database transaction.
*/
public function start_transaction() {
global $wpdb;
$wpdb->query( 'SET autocommit = 0;' );
@ -359,6 +380,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
$wpdb->query( 'COMMIT;' );
}
/**
* Replaces the `CREATE TABLE` statement with a `CREATE TEMPORARY TABLE` statement.
*
* @param string $query The query to replace the statement for.
* @return string The altered query.
*/
public function _create_temporary_tables( $query ) {
if ( 'CREATE TABLE' === substr( trim( $query ), 0, 12 ) ) {
return substr_replace( trim( $query ), 'CREATE TEMPORARY TABLE', 0, 12 );
@ -366,6 +393,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $query;
}
/**
* Replaces the `DROP TABLE` statement with a `DROP TEMPORARY TABLE` statement.
*
* @param string $query The query to replace the statement for.
* @return string The altered query.
*/
public function _drop_temporary_tables( $query ) {
if ( 'DROP TABLE' === substr( trim( $query ), 0, 10 ) ) {
return substr_replace( trim( $query ), 'DROP TEMPORARY TABLE', 0, 10 );
@ -373,10 +406,23 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $query;
}
/**
* Retrieves the `wp_die()` handler.
*
* @param callable $handler The current die handler.
* @return callable The test die handler.
*/
public function get_wp_die_handler( $handler ) {
return array( $this, 'wp_die_handler' );
}
/**
* Throws an exception when called.
*
* @throws WPDieException Exception containing the message.
*
* @param string $message The `wp_die()` message.
*/
public function wp_die_handler( $message ) {
if ( ! is_scalar( $message ) ) {
$message = '0';
@ -385,6 +431,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
throw new WPDieException( $message );
}
/**
* Sets up the expectations for testing a deprecated call.
*/
public function expectDeprecated() {
$annotations = $this->getAnnotations();
foreach ( array( 'class', 'method' ) as $depth ) {
@ -405,6 +454,11 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
add_action( 'doing_it_wrong_trigger_error', '__return_false' );
}
/**
* Handles a deprecated expectation.
*
* The DocBlock should contain `@expectedDeprecated` to trigger this.
*/
public function expectedDeprecated() {
$errors = array();
@ -493,22 +547,44 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
}
}
/**
* Adds a deprecated function to the list of caught deprecated calls.
*
* @param string $function The deprecated function.
*/
public function deprecated_function_run( $function ) {
if ( ! in_array( $function, $this->caught_deprecated ) ) {
$this->caught_deprecated[] = $function;
}
}
/**
* Adds a function called in a wrong way to the list of `_doing_it_wrong()` calls.
*
* @param string $function The function to add.
*/
public function doing_it_wrong_run( $function ) {
if ( ! in_array( $function, $this->caught_doing_it_wrong ) ) {
$this->caught_doing_it_wrong[] = $function;
}
}
/**
* Asserts that the given value is an instance of WP_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertWPError( $actual, $message = '' ) {
$this->assertInstanceOf( 'WP_Error', $actual, $message );
}
/**
* Asserts that the given value is not an instance of WP_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertNotWPError( $actual, $message = '' ) {
if ( is_wp_error( $actual ) && '' === $message ) {
$message = $actual->get_error_message();
@ -516,10 +592,23 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
$this->assertNotInstanceOf( 'WP_Error', $actual, $message );
}
/**
* Asserts that the given value is an instance of IXR_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertIXRError( $actual, $message = '' ) {
$this->assertInstanceOf( 'IXR_Error', $actual, $message );
}
/**
* Asserts that the given value is not an instance of IXR_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertNotIXRError( $actual, $message = '' ) {
if ( $actual instanceof IXR_Error && '' === $message ) {
$message = $actual->message;
@ -527,6 +616,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
$this->assertNotInstanceOf( 'IXR_Error', $actual, $message );
}
/**
* Asserts that the given fields are present in the given object.
*
* @param object $object The object to check.
* @param array $fields The fields to check.
*/
public function assertEqualFields( $object, $fields ) {
foreach ( $fields as $field_name => $field_value ) {
if ( $object->$field_name != $field_value ) {
@ -535,6 +630,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
}
}
/**
* Asserts that two values are equal, with whitespace differences discarded.
*
* @param string $expected The expected value.
* @param string $actual The actual value.
*/
public function assertDiscardWhitespace( $expected, $actual ) {
$this->assertEquals( preg_replace( '/\s*/', '', $expected ), preg_replace( '/\s*/', '', $actual ) );
}
@ -760,7 +861,7 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
*
* This method defines the constants after including files.
*
* @param Text_Template $template
* @param Text_Template $template The template to prepare.
*/
public function prepareTemplate( Text_Template $template ) {
$template->setVar( array( 'constants' => '' ) );
@ -918,7 +1019,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @since 4.0.0
*
* @param string $dir Path to the directory to scan.
*
* @return array List of file paths.
*/
public function files_in_dir( $dir ) {
@ -998,7 +1098,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @since 4.1.0
*
* @param string $microtime Time string generated by `microtime()`.
*
* @return float `microtime()` output as a float.
*/
protected function _microtime_to_float( $microtime ) {
@ -1012,7 +1111,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @since 4.3.0
*
* @param int $user_id User ID.
*
* @return bool True if the user was deleted.
*/
public static function delete_user( $user_id ) {
@ -1047,7 +1145,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
*
* @param array $upload Array of information about the uploaded file, provided by wp_upload_bits().
* @param int $parent_post_id Optional. Parent post ID.
*
* @return int|WP_Error The attachment ID on success. The value 0 or WP_Error on failure.
*/
public function _make_attachment( $upload, $parent_post_id = 0 ) {
@ -1084,7 +1181,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
*
* @param int $post_id Post ID.
* @param string $date Post date, in the format YYYY-MM-DD HH:MM:SS.
*
* @return int|false 1 on success, or false on error.
*/
protected function update_post_modified( $post_id, $date ) {