Add unit tests for WP_Comment_Query 'orderby' param.
For better testability, the SQL string generated in `WP_Comment_Query::get_posts()` is now stored as a 'request' property on the object. See #29902. git-svn-id: https://develop.svn.wordpress.org/trunk@30003 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
1880bf988c
commit
ce810ba5b3
@ -221,6 +221,15 @@ function get_comments( $args = '' ) {
|
|||||||
* @since 3.1.0
|
* @since 3.1.0
|
||||||
*/
|
*/
|
||||||
class WP_Comment_Query {
|
class WP_Comment_Query {
|
||||||
|
/**
|
||||||
|
* SQL for database query.
|
||||||
|
*
|
||||||
|
* @since 4.0.1
|
||||||
|
* @access public
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metadata query container
|
* Metadata query container
|
||||||
*
|
*
|
||||||
@ -578,18 +587,19 @@ class WP_Comment_Query {
|
|||||||
if ( $groupby ) {
|
if ( $groupby ) {
|
||||||
$groupby = 'GROUP BY ' . $groupby;
|
$groupby = 'GROUP BY ' . $groupby;
|
||||||
}
|
}
|
||||||
$query = "SELECT $fields FROM $wpdb->comments $join WHERE $where $groupby ORDER BY $orderby $order $limits";
|
|
||||||
|
$this->request = "SELECT $fields FROM $wpdb->comments $join WHERE $where $groupby $orderby $order $limits";
|
||||||
|
|
||||||
if ( $this->query_vars['count'] ) {
|
if ( $this->query_vars['count'] ) {
|
||||||
return $wpdb->get_var( $query );
|
return $wpdb->get_var( $this->request );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( 'ids' == $this->query_vars['fields'] ) {
|
if ( 'ids' == $this->query_vars['fields'] ) {
|
||||||
$this->comments = $wpdb->get_col( $query );
|
$this->comments = $wpdb->get_col( $this->request );
|
||||||
return array_map( 'intval', $this->comments );
|
return array_map( 'intval', $this->comments );
|
||||||
}
|
}
|
||||||
|
|
||||||
$results = $wpdb->get_results( $query );
|
$results = $wpdb->get_results( $this->request );
|
||||||
/**
|
/**
|
||||||
* Filter the comment query results.
|
* Filter the comment query results.
|
||||||
*
|
*
|
||||||
|
@ -516,4 +516,65 @@ class Tests_Comment_Query extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertEquals( array( $c1, $c2, $c3, $c4, $c5 ), $found );
|
$this->assertEquals( array( $c1, $c2, $c3, $c4, $c5 ), $found );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_orderby_default() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array() );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_date_gmt', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_orderby_single() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array(
|
||||||
|
'orderby' => 'comment_agent',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_agent', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_orderby_single_invalid() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array(
|
||||||
|
'orderby' => 'foo',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_date_gmt', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_orderby_comma_separated() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array(
|
||||||
|
'orderby' => 'comment_agent, comment_approved',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_agent, comment_approved', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_orderby_array() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array(
|
||||||
|
'orderby' => array( 'comment_agent', 'comment_approved' ),
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_agent, comment_approved', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_orderby_array_contains_invalid_item() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array(
|
||||||
|
'orderby' => array( 'comment_agent', 'foo', 'comment_approved' ),
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_agent, comment_approved', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_orderby_array_contains_all_invalid_items() {
|
||||||
|
$q = new WP_Comment_Query();
|
||||||
|
$q->query( array(
|
||||||
|
'orderby' => array( 'foo', 'bar', 'baz' ),
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertContains( 'ORDER BY comment_date_gmt', $q->request );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user