Share fixtures in REST API endpoint tests.

As sparrows' tears shed steadily
Make widest rivers filled,

`setUp()` routines run prodig'ly
Add minutes to a build.

So cull ye fixtures profligate!
Direct thine frugal gaze!

Our savings here - a half-minute -
When multiplied: Amaze!

See #30017.

git-svn-id: https://develop.svn.wordpress.org/trunk@38975 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges
2016-10-27 02:56:28 +00:00
parent 5da7a1dccf
commit eb9e2b9207
9 changed files with 713 additions and 621 deletions

View File

@@ -10,12 +10,20 @@
* @group restapi
*/
class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase {
protected static $administrator;
public static function wpSetUpBeforeClass( $factory ) {
self::$administrator = $factory->user->create( array(
'role' => 'administrator',
) );
}
public static function wpTearDownAfterClass() {
self::delete_user( self::$administrator );
}
public function setUp() {
parent::setUp();
$this->administrator = $this->factory->user->create( array(
'role' => 'administrator',
) );
$this->endpoint = new WP_REST_Settings_Controller();
}
@@ -37,7 +45,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_get_item() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
$request = new WP_REST_Request( 'GET', '/wp/v2/settings' );
$response = $this->server->dispatch( $request );
$data = $response->get_data();
@@ -63,7 +71,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_get_item_value_is_cast_to_type() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
update_option( 'posts_per_page', 'invalid_number' ); // this is cast to (int) 1
$request = new WP_REST_Request( 'GET', '/wp/v2/settings' );
$response = $this->server->dispatch( $request );
@@ -74,7 +82,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_get_item_with_custom_setting() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
register_setting( 'somegroup', 'mycustomsetting', array(
'show_in_rest' => array(
@@ -114,7 +122,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_get_item_with_filter() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
add_filter( 'rest_pre_get_setting', array( $this, 'get_setting_custom_callback' ), 10, 3 );
@@ -155,7 +163,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_update_item() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
$request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
$request->set_param( 'title', 'The new title!' );
$response = $this->server->dispatch( $request );
@@ -176,7 +184,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_update_item_with_filter() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
$request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
$request->set_param( 'title', 'The old title!' );
@@ -207,7 +215,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
}
public function test_update_item_with_invalid_type() {
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
$request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
$request->set_param( 'title', array( 'rendered' => 'This should fail.' ) );
$response = $this->server->dispatch( $request );
@@ -220,7 +228,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
public function test_update_item_with_null() {
update_option( 'posts_per_page', 9 );
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
$request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
$request->set_param( 'posts_per_page', null );
$response = $this->server->dispatch( $request );
@@ -233,7 +241,7 @@ class WP_Test_REST_Settings_Controller extends WP_Test_REST_Controller_Testcase
public function test_update_item_with_invalid_enum() {
update_option( 'posts_per_page', 9 );
wp_set_current_user( $this->administrator );
wp_set_current_user( self::$administrator );
$request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
$request->set_param( 'default_ping_status', 'open&closed' );
$response = $this->server->dispatch( $request );