Tests for some existing 'orderby' functionality in WP_*_Query classes.

* In `WP_Query` and `WP_Comment_Query`, ensure that 'orderby' can parse multiple values for 'orderby' when passed as a space-separated string.
* In `WP_User_Query`, ensure that "shorthand" orderbys (like 'login' and 'name') are converted to their full versions (like 'user_login' and 'display_name').

See #31265.

git-svn-id: https://develop.svn.wordpress.org/trunk@31662 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges 2015-03-07 15:44:28 +00:00
parent 305a44617c
commit 3262ff0cc8
3 changed files with 43 additions and 0 deletions

View File

@ -1108,6 +1108,17 @@ class Tests_Comment_Query extends WP_UnitTestCase {
$this->assertContains( "ORDER BY $wpdb->comments.comment_date_gmt", $q->request );
}
public function test_orderby_space_separated() {
global $wpdb;
$q = new WP_Comment_Query();
$q->query( array(
'orderby' => 'comment_agent comment_approved',
) );
$this->assertContains( "ORDER BY $wpdb->comments.comment_agent DESC, $wpdb->comments.comment_approved DESC", $q->request );
}
public function test_orderby_comma_separated() {
global $wpdb;

View File

@ -122,4 +122,15 @@ class Tests_Query extends WP_UnitTestCase {
public function filter_parse_query_to_remove_tax( $q ) {
unset( $q->query_vars['wptests_tax'] );
}
public function test_orderby_space_separated() {
global $wpdb;
$q = new WP_Query( array(
'orderby' => 'title date',
'order' => 'DESC',
) );
$this->assertContains( "ORDER BY $wpdb->posts.post_title DESC, $wpdb->posts.post_date DESC", $q->request );
}
}

View File

@ -113,6 +113,27 @@ class Tests_User_Query extends WP_UnitTestCase {
}
}
/**
* @dataProvider orderby_should_convert_non_prefixed_keys_data
*/
public function test_orderby_should_convert_non_prefixed_keys( $short_key, $full_key ) {
$q = new WP_User_Query( array(
'orderby' => $short_key,
) );
$this->assertContains( "ORDER BY $full_key", $q->query_orderby );
}
public function orderby_should_convert_non_prefixed_keys_data() {
return array(
array( 'nicename', 'user_nicename' ),
array( 'email', 'user_email' ),
array( 'url', 'user_url' ),
array( 'registered', 'user_registered' ),
array( 'name', 'display_name' ),
);
}
public function test_orderby_meta_value() {
$users = $this->factory->user->create_many( 3, array(
'role' => 'author'