mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
WPCS 1.0.0 includes a bunch of new auto-fixers, which drops the number of coding standards issues across WordPress significantly. Prior to running the auto-fixers, there were 15,312 issues detected. With this commit, we now drop to 4,769 issues. This change includes three notable additions: - Multiline function calls must now put each parameter on a new line. - Auto-formatting files is now part of the `grunt precommit` script. - Auto-fixable coding standards issues will now cause Travis failures. Fixes #44600. git-svn-id: https://develop.svn.wordpress.org/trunk@43571 602fd350-edb4-49c9-b593-d223f7449a82
1169 lines
28 KiB
PHP
1169 lines
28 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Tests to make sure querying posts based on various date parameters using "date_query" works as expected.
|
|
*
|
|
* @ticket 18694
|
|
*
|
|
* @group query
|
|
* @group date
|
|
* @group datequery
|
|
*/
|
|
class Tests_Query_DateQuery extends WP_UnitTestCase {
|
|
|
|
public $q;
|
|
|
|
public function setUp() {
|
|
parent::setUp();
|
|
unset( $this->q );
|
|
$this->q = new WP_Query();
|
|
}
|
|
|
|
public function _get_query_result( $args = array() ) {
|
|
$args = wp_parse_args(
|
|
$args,
|
|
array(
|
|
'post_status' => 'any', // For the future post
|
|
'posts_per_page' => '-1', // To make sure results are accurate
|
|
'orderby' => 'ID', // Same order they were created
|
|
'order' => 'ASC',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
)
|
|
);
|
|
|
|
return $this->q->query( $args );
|
|
}
|
|
|
|
public function test_date_query_before_array() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2007-09-24 07:17:23' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2008-03-29 07:17:23' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2008-07-15 07:17:23' ) );
|
|
$p4 = self::factory()->post->create( array( 'post_date' => '2009-06-11 07:17:23' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'before' => array(
|
|
'year' => 2008,
|
|
'month' => 6,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1, $p2 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* Specifically tests to make sure values are defaulting to
|
|
* their minimum values when being used with "before".
|
|
*/
|
|
public function test_date_query_before_array_test_defaulting() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2007-09-24 07:17:23' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2008-03-29 07:17:23' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'before' => array(
|
|
'year' => 2008,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_before_string() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2007-09-24 07:17:23' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2008-03-29 07:17:23' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2008-07-15 07:17:23' ) );
|
|
$p4 = self::factory()->post->create( array( 'post_date' => '2009-06-11 07:17:23' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'before' => 'May 4th, 2008',
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1, $p2 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_after_array() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-10-18 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2009-12-18 10:42:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2010-06-11 07:17:23' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'after' => array(
|
|
'year' => 2009,
|
|
'month' => 12,
|
|
'day' => 31,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p3 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* Specifically tests to make sure values are defaulting to
|
|
* their maximum values when being used with "after".
|
|
*/
|
|
public function test_date_query_after_array_test_defaulting() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2008-12-18 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2009-01-18 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'after' => array(
|
|
'year' => 2008,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_after_string() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-12-18 09:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2009-12-18 10:42:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2009-12-19 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'after' => '2009-12-18 10:42:29',
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p3 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_after_string_inclusive() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-12-18 09:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2009-12-18 10:42:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2009-12-19 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'after' => '2009-12-18 10:42:29',
|
|
'inclusive' => true,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2, $p3 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 26653
|
|
*/
|
|
public function test_date_query_inclusive_between_dates() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2006-12-18 09:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2007-01-18 10:42:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2007-12-19 10:42:29' ) );
|
|
$p4 = self::factory()->post->create( array( 'post_date' => '2008-12-19 10:42:29' ) );
|
|
$p5 = self::factory()->post->create( array( 'post_date' => '2009-12-19 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
'after' => array(
|
|
'year' => 2007,
|
|
'month' => 1,
|
|
),
|
|
'before' => array(
|
|
'year' => 2008,
|
|
'month' => 12,
|
|
),
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2, $p3, $p4 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_Y() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 13:00:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2007-05-07 13:00:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008',
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2007',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), $before_posts );
|
|
$this->assertEquals( array( $p1 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_Y_inclusive() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 13:00:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2007-05-07 13:00:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2007',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1, $p2 ), $before_posts );
|
|
$this->assertEqualSets( array( $p1, $p2 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_Ym() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 13:00:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-04-07 13:00:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05',
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-04',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), $before_posts );
|
|
$this->assertEquals( array( $p1 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_Ym_inclusive() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 13:00:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-04-07 13:00:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-04',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1, $p2 ), $before_posts );
|
|
$this->assertEqualSets( array( $p1, $p2 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_Ymd() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 13:00:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-05 13:00:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05-06',
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-05-05',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), $before_posts );
|
|
$this->assertEquals( array( $p1 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_Ymd_inclusive() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 13:00:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-05 13:00:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05-06',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-05-05',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1, $p2 ), $before_posts );
|
|
$this->assertEqualSets( array( $p1, $p2 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_YmdHi() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:05:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:04:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05-06 14:05',
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-05-06 14:04',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), $before_posts );
|
|
$this->assertEquals( array( $p1 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_YmdHi_inclusive() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:05:00',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:04:00',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05-06 14:05',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-05-06 14:04',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1, $p2 ), $before_posts );
|
|
$this->assertEqualSets( array( $p1, $p2 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_YmdHis() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:05:15',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:05:14',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05-06 14:05:15',
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-05-06 14:05:14',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), $before_posts );
|
|
$this->assertEquals( array( $p1 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_YmdHis_inclusive() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:04:15',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:04:14',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => '2008-05-06 14:04:15',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => '2008-05-06 14:04:14',
|
|
'inclusive' => true,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p1, $p2 ), $before_posts );
|
|
$this->assertEqualSets( array( $p1, $p2 ), $after_posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29908
|
|
*/
|
|
public function test_beforeafter_with_date_string_non_parseable() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:05:15',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2008-05-06 14:05:14',
|
|
)
|
|
);
|
|
|
|
$before_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'before' => 'June 12, 2008',
|
|
),
|
|
)
|
|
);
|
|
|
|
$after_posts = $this->_get_query_result(
|
|
array(
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'date_query' => array(
|
|
'after' => 'June 12, 2007',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1, $p2 ), $before_posts );
|
|
}
|
|
|
|
public function test_date_query_year() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-12-19 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2010-12-19 10:42:29' ) );
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'year' => 2009,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_month() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-12-19 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2010-11-19 10:42:29' ) );
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'month' => 12,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_week() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-01-02 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2010-03-19 10:42:29' ) );
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'week' => 1,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_day() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2009-01-17 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2009-01-18 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'day' => 17,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_dayofweek() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-21 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-20 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'dayofweek' => 3,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 28063
|
|
*/
|
|
public function test_date_query_dayofweek_iso() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-31 10:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-30 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'dayofweek_iso' => 5,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_hour() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-21 13:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-21 12:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'hour' => 13,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 34228
|
|
*/
|
|
public function test_date_query_hour_should_not_ignore_0() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-21 00:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-21 01:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'year' => 2014,
|
|
'monthnum' => 10,
|
|
'day' => 21,
|
|
'hour' => 0,
|
|
'minute' => 42,
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_minute() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-21 10:56:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-21 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'minute' => 56,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_second() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-21 10:42:21' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-21 10:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'second' => 21,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_between_two_times() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2005-12-18 08:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2006-12-18 09:00:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2007-12-18 10:42:29' ) );
|
|
$p4 = self::factory()->post->create( array( 'post_date' => '2008-12-18 17:00:29' ) );
|
|
$p5 = self::factory()->post->create( array( 'post_date' => '2009-12-18 18:42:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'hour' => 9,
|
|
'minute' => 0,
|
|
'compare' => '>=',
|
|
),
|
|
array(
|
|
'hour' => '17',
|
|
'minute' => '0',
|
|
'compare' => '<=',
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEqualSets( array( $p2, $p3, $p4 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_relation_or() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2006-12-18 14:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2007-01-18 10:42:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2007-12-19 10:34:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'hour' => 14,
|
|
),
|
|
array(
|
|
'minute' => 34,
|
|
),
|
|
'relation' => 'OR',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1, $p3 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_query_compare_greater_than_or_equal_to() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2006-12-18 13:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2007-01-18 14:34:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2007-12-19 14:37:29' ) );
|
|
$p4 = self::factory()->post->create( array( 'post_date' => '2007-12-19 15:34:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
array(
|
|
'hour' => 14,
|
|
'minute' => 34,
|
|
),
|
|
'compare' => '>=',
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2, $p3, $p4 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
public function test_date_params_monthnum_m_duplicate() {
|
|
global $wpdb;
|
|
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2006-05-18 13:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2007-09-18 14:34:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2007-01-18 14:34:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
'month' => 5,
|
|
'monthnum' => 9,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
|
|
$this->assertContains( "MONTH( $wpdb->posts.post_date ) = 5", $this->q->request );
|
|
$this->assertNotContains( "MONTH( $wpdb->posts.post_date ) = 9", $this->q->request );
|
|
}
|
|
|
|
public function test_date_params_week_w_duplicate() {
|
|
global $wpdb;
|
|
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2014-10-01 13:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2014-10-22 14:34:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '2014-10-15 14:34:29' ) );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
'week' => 43,
|
|
'w' => 42,
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2 ), wp_list_pluck( $posts, 'ID' ) );
|
|
|
|
$this->assertContains( "WEEK( $wpdb->posts.post_date, 1 ) = 43", $this->q->request );
|
|
$this->assertNotContains( "WEEK( $wpdb->posts.post_date, 1 ) = 42", $this->q->request );
|
|
}
|
|
|
|
/**
|
|
* @ticket 25775
|
|
*/
|
|
public function test_date_query_with_taxonomy_join() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2013-04-27 01:01:01',
|
|
)
|
|
);
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2013-03-21 01:01:01',
|
|
)
|
|
);
|
|
|
|
register_taxonomy( 'foo', 'post' );
|
|
wp_set_object_terms( $p1, 'bar', 'foo' );
|
|
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
'year' => 2013,
|
|
),
|
|
'tax_query' => array(
|
|
array(
|
|
'taxonomy' => 'foo',
|
|
'terms' => array( 'bar' ),
|
|
'field' => 'name',
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
_unregister_taxonomy( 'foo' );
|
|
|
|
$this->assertEquals( array( $p1 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29822
|
|
*/
|
|
public function test_date_query_one_nested_query() {
|
|
$p1 = self::factory()->post->create( array( 'post_date' => '2004-10-01 13:42:29' ) );
|
|
$p2 = self::factory()->post->create( array( 'post_date' => '2004-01-22 14:34:29' ) );
|
|
$p3 = self::factory()->post->create( array( 'post_date' => '1984-10-15 14:34:29' ) );
|
|
$p4 = self::factory()->post->create( array( 'post_date' => '1985-10-15 14:34:29' ) );
|
|
$posts = $this->_get_query_result(
|
|
array(
|
|
'date_query' => array(
|
|
'relation' => 'OR',
|
|
array(
|
|
'relation' => 'AND',
|
|
array(
|
|
'year' => 2004,
|
|
),
|
|
array(
|
|
'month' => 1,
|
|
),
|
|
),
|
|
array(
|
|
'year' => 1984,
|
|
),
|
|
),
|
|
)
|
|
);
|
|
|
|
$this->assertEquals( array( $p2, $p3 ), wp_list_pluck( $posts, 'ID' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29822
|
|
*/
|
|
public function test_date_query_one_nested_query_multiple_columns_relation_and() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2012-03-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p1, '2014-11-03 14:43:00' );
|
|
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2012-05-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p2, '2014-10-03 14:43:00' );
|
|
|
|
$p3 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2013-05-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p3, '2014-10-03 14:43:00' );
|
|
|
|
$p4 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2012-02-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p4, '2012-12-03 14:43:00' );
|
|
|
|
$q = new WP_Query(
|
|
array(
|
|
'date_query' => array(
|
|
'relation' => 'AND',
|
|
array(
|
|
'column' => 'post_date',
|
|
array(
|
|
'year' => 2012,
|
|
),
|
|
),
|
|
array(
|
|
'column' => 'post_modified',
|
|
array(
|
|
'year' => 2014,
|
|
),
|
|
),
|
|
),
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'post_status' => 'publish',
|
|
)
|
|
);
|
|
|
|
$expected = array( $p1, $p2 );
|
|
|
|
$this->assertEqualSets( $expected, $q->posts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 29822
|
|
*/
|
|
public function test_date_query_nested_query_multiple_columns_mixed_relations() {
|
|
$p1 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2012-03-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p1, '2014-11-03 14:43:00' );
|
|
|
|
$p2 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2012-05-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p2, '2014-10-03 14:43:00' );
|
|
|
|
$p3 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2013-05-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p3, '2014-10-03 14:43:00' );
|
|
|
|
$p4 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2012-02-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p4, '2012-12-03 14:43:00' );
|
|
|
|
$p5 = self::factory()->post->create(
|
|
array(
|
|
'post_date' => '2014-02-05 15:30:55',
|
|
)
|
|
);
|
|
$this->update_post_modified( $p5, '2013-12-03 14:43:00' );
|
|
|
|
$q = new WP_Query(
|
|
array(
|
|
'date_query' => array(
|
|
'relation' => 'OR',
|
|
array(
|
|
'relation' => 'AND',
|
|
array(
|
|
'column' => 'post_date',
|
|
array(
|
|
'day' => 05,
|
|
),
|
|
),
|
|
array(
|
|
'column' => 'post_date',
|
|
array(
|
|
'before' => array(
|
|
'year' => 2012,
|
|
'month' => 4,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'column' => 'post_modified',
|
|
array(
|
|
'month' => 12,
|
|
),
|
|
),
|
|
),
|
|
'fields' => 'ids',
|
|
'update_post_meta_cache' => false,
|
|
'update_post_term_cache' => false,
|
|
'post_status' => 'publish',
|
|
)
|
|
);
|
|
|
|
$expected = array( $p1, $p4, $p5 );
|
|
$this->assertEqualSets( $expected, $q->posts );
|
|
}
|
|
}
|