Ticket #18694: 18694-unit-tests.patch

File 18694-unit-tests.patch, 19.2 KB (added by Viper007Bond, 6 months ago)
  • tests/date-query.php

     
     1<?php 
     2 
     3/** 
     4 * @group datequery 
     5 */ 
     6class Tests_Query_Date extends WP_UnitTestCase { 
     7 
     8        public $q; 
     9 
     10        public function setUp() { 
     11                parent::setUp(); 
     12 
     13                // Be careful modifying this. Tests are coded to expect this exact sample data. 
     14                $post_dates = array( 
     15                        '1972-05-24 14:53:45', 
     16                        '1984-07-28 19:28:56', 
     17                        '2003-05-27 22:45:07', 
     18                        '2004-01-03 08:54:10', 
     19                        '2004-05-22 12:34:12', 
     20                        '2005-02-17 00:00:15', 
     21                        '2005-12-31 23:59:20', 
     22                        '2007-01-22 03:49:21', 
     23                        '2007-05-16 17:32:22', 
     24                        '2007-09-24 07:17:23', 
     25                        '2008-03-29 09:04:25', 
     26                        '2008-07-15 11:32:26', 
     27                        '2008-12-10 13:06:27', 
     28                        '2009-06-11 21:30:28', 
     29                        '2009-12-18 10:42:29', 
     30                        '2010-06-17 17:09:30', 
     31                        '2011-02-23 12:12:31', 
     32                        '2011-07-04 01:56:32', 
     33                        '2011-12-12 16:39:33', 
     34                        '2012-06-13 14:03:34', 
     35                        '2025-04-20 10:13:00', 
     36                ); 
     37 
     38                foreach ( $post_dates as $post_date ) { 
     39                        $this->factory->post->create( array( 'post_date' => $post_date ) ); 
     40                } 
     41 
     42                unset( $this->q ); 
     43                $this->q = new WP_Query(); 
     44        } 
     45 
     46        public function _get_query_result( $args = array() ) { 
     47                $args = wp_parse_args( $args, array( 
     48                        'post_status'    => 'any', // For the future post 
     49                        'posts_per_page' => '-1',  // To make sure results are accurate 
     50                        'orderby'        => 'ID',  // Same order they were created 
     51                        'order'          => 'ASC', 
     52                ) ); 
     53 
     54                return $this->q->query( $args ); 
     55        } 
     56 
     57 
     58        /** 
     59         * Simple legacy date parameter tests 
     60         */ 
     61 
     62        public function test_simple_year_expecting_results() { 
     63                $posts = $this->_get_query_result( array( 
     64                        'year' => 2008, 
     65                ) ); 
     66 
     67                $expected_dates = array( 
     68                        '2008-03-29 09:04:25', 
     69                        '2008-07-15 11:32:26', 
     70                        '2008-12-10 13:06:27', 
     71                ); 
     72 
     73                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     74        } 
     75 
     76        public function test_simple_year_expecting_noresults() { 
     77                $posts = $this->_get_query_result( array( 
     78                        'year' => 2000, 
     79                ) ); 
     80 
     81                $this->assertCount( 0, $posts ); 
     82        } 
     83 
     84        public function test_simple_monthnum_expecting_results() { 
     85                $posts = $this->_get_query_result( array( 
     86                        'monthnum' => 5, 
     87                ) ); 
     88 
     89                $expected_dates = array( 
     90                        '1972-05-24 14:53:45', 
     91                        '2003-05-27 22:45:07', 
     92                        '2004-05-22 12:34:12', 
     93                        '2007-05-16 17:32:22', 
     94                ); 
     95 
     96                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     97        } 
     98 
     99        public function test_simple_monthnum_expecting_noresults() { 
     100                $posts = $this->_get_query_result( array( 
     101                        'monthnum' => 8, 
     102                ) ); 
     103 
     104                $this->assertCount( 0, $posts ); 
     105        } 
     106 
     107        public function test_simple_w_as_in_week_expecting_results() { 
     108                $posts = $this->_get_query_result( array( 
     109                        'w' => 24, 
     110                ) ); 
     111 
     112                $expected_dates = array( 
     113                        '2009-06-11 21:30:28', 
     114                        '2010-06-17 17:09:30', 
     115                        '2012-06-13 14:03:34', 
     116                ); 
     117 
     118                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     119        } 
     120 
     121        public function test_simple_w_as_in_week_expecting_noresults() { 
     122                $posts = $this->_get_query_result( array( 
     123                        'w' => 2, 
     124                ) ); 
     125 
     126                $this->assertCount( 0, $posts ); 
     127        } 
     128 
     129        public function test_simple_day_expecting_results() { 
     130                $posts = $this->_get_query_result( array( 
     131                        'day' => 22, 
     132                ) ); 
     133 
     134                $expected_dates = array( 
     135                        '2004-05-22 12:34:12', 
     136                        '2007-01-22 03:49:21', 
     137                ); 
     138 
     139                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     140        } 
     141 
     142        public function test_simple_day_expecting_noresults() { 
     143                $posts = $this->_get_query_result( array( 
     144                        'day' => 30, 
     145                ) ); 
     146 
     147                $this->assertCount( 0, $posts ); 
     148        } 
     149 
     150        public function test_simple_hour_expecting_results() { 
     151                $posts = $this->_get_query_result( array( 
     152                        'hour' => 21, 
     153                ) ); 
     154 
     155                $expected_dates = array( 
     156                        '2009-06-11 21:30:28', 
     157                ); 
     158 
     159                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     160        } 
     161 
     162        public function test_simple_hour_expecting_noresults() { 
     163                $posts = $this->_get_query_result( array( 
     164                        'hour' => 2, 
     165                ) ); 
     166 
     167                $this->assertCount( 0, $posts ); 
     168        } 
     169 
     170        public function test_simple_minute_expecting_results() { 
     171                $posts = $this->_get_query_result( array( 
     172                        'minute' => 32, 
     173                ) ); 
     174 
     175                $expected_dates = array( 
     176                        '2007-05-16 17:32:22', 
     177                        '2008-07-15 11:32:26', 
     178                ); 
     179 
     180                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     181        } 
     182 
     183        public function test_simple_minute_expecting_noresults() { 
     184                $posts = $this->_get_query_result( array( 
     185                        'minute' => 1, 
     186                ) ); 
     187 
     188                $this->assertCount( 0, $posts ); 
     189        } 
     190 
     191        public function test_simple_second_expecting_results() { 
     192                $posts = $this->_get_query_result( array( 
     193                        'second' => 30, 
     194                ) ); 
     195 
     196                $expected_dates = array( 
     197                        '2010-06-17 17:09:30', 
     198                ); 
     199 
     200                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     201        } 
     202 
     203        public function test_simple_second_expecting_noresults() { 
     204                $posts = $this->_get_query_result( array( 
     205                        'second' => 50, 
     206                ) ); 
     207 
     208                $this->assertCount( 0, $posts ); 
     209        } 
     210 
     211 
     212        /** 
     213         * WP_Date_Query tests 
     214         */ 
     215 
     216        public function test_date_query_before_array() { 
     217                if ( ! class_exists( 'WP_Date_Query' ) ) 
     218                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     219 
     220                $posts = $this->_get_query_result( array( 
     221                        'date_query' => array( 
     222                                array( 
     223                                        'before' => array( 
     224                                                'year' => 2008, 
     225                                                'month' => 6, 
     226                                        ), 
     227                                ), 
     228                        ), 
     229                ) ); 
     230 
     231                $expected_dates = array( 
     232                        '1972-05-24 14:53:45', 
     233                        '1984-07-28 19:28:56', 
     234                        '2003-05-27 22:45:07', 
     235                        '2004-01-03 08:54:10', 
     236                        '2004-05-22 12:34:12', 
     237                        '2005-02-17 00:00:15', 
     238                        '2005-12-31 23:59:20', 
     239                        '2007-01-22 03:49:21', 
     240                        '2007-05-16 17:32:22', 
     241                        '2007-09-24 07:17:23', 
     242                        '2008-03-29 09:04:25', 
     243                ); 
     244 
     245                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     246        } 
     247 
     248        /** 
     249         * Specifically tests to make sure values are defaulting to 
     250         * their minimum values when being used with "before". 
     251         */ 
     252        public function test_date_query_before_array_test_defaulting() { 
     253                if ( ! class_exists( 'WP_Date_Query' ) ) 
     254                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     255 
     256                $posts = $this->_get_query_result( array( 
     257                        'date_query' => array( 
     258                                array( 
     259                                        'before' => array( 
     260                                                'year' => 2008, 
     261                                        ), 
     262                                ), 
     263                        ), 
     264                ) ); 
     265 
     266                $expected_dates = array( 
     267                        '1972-05-24 14:53:45', 
     268                        '1984-07-28 19:28:56', 
     269                        '2003-05-27 22:45:07', 
     270                        '2004-01-03 08:54:10', 
     271                        '2004-05-22 12:34:12', 
     272                        '2005-02-17 00:00:15', 
     273                        '2005-12-31 23:59:20', 
     274                        '2007-01-22 03:49:21', 
     275                        '2007-05-16 17:32:22', 
     276                        '2007-09-24 07:17:23', 
     277                ); 
     278 
     279                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     280        } 
     281 
     282        public function test_date_query_before_string() { 
     283                if ( ! class_exists( 'WP_Date_Query' ) ) 
     284                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     285 
     286                $posts = $this->_get_query_result( array( 
     287                        'date_query' => array( 
     288                                array( 
     289                                        'before' => 'May 4th, 2008', 
     290                                ), 
     291                        ), 
     292                ) ); 
     293 
     294                $expected_dates = array( 
     295                        '1972-05-24 14:53:45', 
     296                        '1984-07-28 19:28:56', 
     297                        '2003-05-27 22:45:07', 
     298                        '2004-01-03 08:54:10', 
     299                        '2004-05-22 12:34:12', 
     300                        '2005-02-17 00:00:15', 
     301                        '2005-12-31 23:59:20', 
     302                        '2007-01-22 03:49:21', 
     303                        '2007-05-16 17:32:22', 
     304                        '2007-09-24 07:17:23', 
     305                        '2008-03-29 09:04:25', 
     306                ); 
     307 
     308                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     309        } 
     310 
     311        public function test_date_query_after_array() { 
     312                if ( ! class_exists( 'WP_Date_Query' ) ) 
     313                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     314 
     315                $posts = $this->_get_query_result( array( 
     316                        'date_query' => array( 
     317                                array( 
     318                                        'after' => array( 
     319                                                'year'  => 2009, 
     320                                                'month' => 12, 
     321                                                'day'   => 31, 
     322                                        ), 
     323                                ), 
     324                        ), 
     325                ) ); 
     326 
     327                $expected_dates = array( 
     328                        '2010-06-17 17:09:30', 
     329                        '2011-02-23 12:12:31', 
     330                        '2011-07-04 01:56:32', 
     331                        '2011-12-12 16:39:33', 
     332                        '2012-06-13 14:03:34', 
     333                        '2025-04-20 10:13:00', 
     334                ); 
     335 
     336                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     337        } 
     338 
     339        /** 
     340         * Specifically tests to make sure values are defaulting to 
     341         * their maximum values when being used with "after". 
     342         */ 
     343        public function test_date_query_after_array_test_defaulting() { 
     344                if ( ! class_exists( 'WP_Date_Query' ) ) 
     345                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     346 
     347                $posts = $this->_get_query_result( array( 
     348                        'date_query' => array( 
     349                                array( 
     350                                        'after' => array( 
     351                                                'year' => 2008, 
     352                                        ), 
     353                                ), 
     354                        ), 
     355                ) ); 
     356 
     357                $expected_dates = array( 
     358                        '2009-06-11 21:30:28', 
     359                        '2009-12-18 10:42:29', 
     360                        '2010-06-17 17:09:30', 
     361                        '2011-02-23 12:12:31', 
     362                        '2011-07-04 01:56:32', 
     363                        '2011-12-12 16:39:33', 
     364                        '2012-06-13 14:03:34', 
     365                        '2025-04-20 10:13:00', 
     366                ); 
     367 
     368                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     369        } 
     370 
     371        public function test_date_query_after_string() { 
     372                if ( ! class_exists( 'WP_Date_Query' ) ) 
     373                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     374 
     375                $posts = $this->_get_query_result( array( 
     376                        'date_query' => array( 
     377                                array( 
     378                                        'after' => '2009-12-18 10:42:29', 
     379                                ), 
     380                        ), 
     381                ) ); 
     382 
     383                $expected_dates = array( 
     384                        '2010-06-17 17:09:30', 
     385                        '2011-02-23 12:12:31', 
     386                        '2011-07-04 01:56:32', 
     387                        '2011-12-12 16:39:33', 
     388                        '2012-06-13 14:03:34', 
     389                        '2025-04-20 10:13:00', 
     390                ); 
     391 
     392                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     393        } 
     394 
     395        public function test_date_query_after_string_inclusive() { 
     396                if ( ! class_exists( 'WP_Date_Query' ) ) 
     397                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     398 
     399                $posts = $this->_get_query_result( array( 
     400                        'date_query' => array( 
     401                                array( 
     402                                        'after'     => '2009-12-18 10:42:29', 
     403                                        'inclusive' => true, 
     404                                ), 
     405                        ), 
     406                ) ); 
     407 
     408                $expected_dates = array( 
     409                        '2009-12-18 10:42:29', 
     410                        '2010-06-17 17:09:30', 
     411                        '2011-02-23 12:12:31', 
     412                        '2011-07-04 01:56:32', 
     413                        '2011-12-12 16:39:33', 
     414                        '2012-06-13 14:03:34', 
     415                        '2025-04-20 10:13:00', 
     416                ); 
     417 
     418                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     419        } 
     420 
     421        public function test_date_query_year_expecting_results() { 
     422                if ( ! class_exists( 'WP_Date_Query' ) ) 
     423                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     424 
     425                $posts = $this->_get_query_result( array( 
     426                        'date_query' => array( 
     427                                array( 
     428                                        'year' => 2009, 
     429                                ), 
     430                        ), 
     431                ) ); 
     432 
     433                $expected_dates = array( 
     434                        '2009-06-11 21:30:28', 
     435                        '2009-12-18 10:42:29', 
     436                ); 
     437 
     438                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     439        } 
     440 
     441        public function test_date_query_year_expecting_noresults() { 
     442                if ( ! class_exists( 'WP_Date_Query' ) ) 
     443                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     444 
     445                $posts = $this->_get_query_result( array( 
     446                        'date_query' => array( 
     447                                array( 
     448                                        'year' => 2001, 
     449                                ), 
     450                        ), 
     451                ) ); 
     452 
     453                $this->assertCount( 0, $posts ); 
     454        } 
     455 
     456        public function test_date_query_month_expecting_results() { 
     457                if ( ! class_exists( 'WP_Date_Query' ) ) 
     458                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     459 
     460                $posts = $this->_get_query_result( array( 
     461                        'date_query' => array( 
     462                                array( 
     463                                        'month' => 12, 
     464                                ), 
     465                        ), 
     466                ) ); 
     467 
     468                $expected_dates = array( 
     469                        '2005-12-31 23:59:20', 
     470                        '2008-12-10 13:06:27', 
     471                        '2009-12-18 10:42:29', 
     472                        '2011-12-12 16:39:33', 
     473                ); 
     474 
     475                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     476        } 
     477 
     478        public function test_date_query_month_expecting_noresults() { 
     479                if ( ! class_exists( 'WP_Date_Query' ) ) 
     480                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     481 
     482                $posts = $this->_get_query_result( array( 
     483                        'date_query' => array( 
     484                                array( 
     485                                        'month' => 8, 
     486                                ), 
     487                        ), 
     488                ) ); 
     489 
     490                $this->assertCount( 0, $posts ); 
     491        } 
     492 
     493        public function test_date_query_week_expecting_results() { 
     494                if ( ! class_exists( 'WP_Date_Query' ) ) 
     495                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     496 
     497                $posts = $this->_get_query_result( array( 
     498                        'date_query' => array( 
     499                                array( 
     500                                        'week' => 1, 
     501                                ), 
     502                        ), 
     503                ) ); 
     504 
     505                $expected_dates = array( 
     506                        '2004-01-03 08:54:10', 
     507                ); 
     508 
     509                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     510        } 
     511 
     512        public function test_date_query_week_expecting_noresults() { 
     513                if ( ! class_exists( 'WP_Date_Query' ) ) 
     514                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     515 
     516                $posts = $this->_get_query_result( array( 
     517                        'date_query' => array( 
     518                                array( 
     519                                        'week' => 10, 
     520                                ), 
     521                        ), 
     522                ) ); 
     523 
     524                $this->assertCount( 0, $posts ); 
     525        } 
     526 
     527        public function test_date_query_day_expecting_results() { 
     528                if ( ! class_exists( 'WP_Date_Query' ) ) 
     529                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     530 
     531                $posts = $this->_get_query_result( array( 
     532                        'date_query' => array( 
     533                                array( 
     534                                        'day' => 17, 
     535                                ), 
     536                        ), 
     537                ) ); 
     538 
     539                $expected_dates = array( 
     540                        '2005-02-17 00:00:15', 
     541                        '2010-06-17 17:09:30', 
     542                ); 
     543 
     544                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     545        } 
     546 
     547        public function test_date_query_day_expecting_noresults() { 
     548                if ( ! class_exists( 'WP_Date_Query' ) ) 
     549                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     550 
     551                $posts = $this->_get_query_result( array( 
     552                        'date_query' => array( 
     553                                array( 
     554                                        'day' => 19, 
     555                                ), 
     556                        ), 
     557                ) ); 
     558 
     559                $this->assertCount( 0, $posts ); 
     560        } 
     561 
     562        public function test_date_query_dayofweek_expecting_results() { 
     563                if ( ! class_exists( 'WP_Date_Query' ) ) 
     564                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     565 
     566                $posts = $this->_get_query_result( array( 
     567                        'date_query' => array( 
     568                                array( 
     569                                        'dayofweek' => 7, 
     570                                ), 
     571                        ), 
     572                ) ); 
     573 
     574                $expected_dates = array( 
     575                        '1984-07-28 19:28:56', 
     576                        '2004-01-03 08:54:10', 
     577                        '2004-05-22 12:34:12', 
     578                        '2005-12-31 23:59:20', 
     579                        '2008-03-29 09:04:25', 
     580                ); 
     581 
     582                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     583        } 
     584 
     585        public function test_date_query_hour_expecting_results() { 
     586                if ( ! class_exists( 'WP_Date_Query' ) ) 
     587                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     588 
     589                $posts = $this->_get_query_result( array( 
     590                        'date_query' => array( 
     591                                array( 
     592                                        'hour' => 13, 
     593                                ), 
     594                        ), 
     595                ) ); 
     596 
     597                $expected_dates = array( 
     598                        '2008-12-10 13:06:27', 
     599                ); 
     600 
     601                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     602        } 
     603 
     604        public function test_date_query_hour_expecting_noresults() { 
     605                if ( ! class_exists( 'WP_Date_Query' ) ) 
     606                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     607 
     608                $posts = $this->_get_query_result( array( 
     609                        'date_query' => array( 
     610                                array( 
     611                                        'hour' => 2, 
     612                                ), 
     613                        ), 
     614                ) ); 
     615 
     616                $this->assertCount( 0, $posts ); 
     617        } 
     618 
     619        public function test_date_query_minute_expecting_results() { 
     620                if ( ! class_exists( 'WP_Date_Query' ) ) 
     621                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     622 
     623                $posts = $this->_get_query_result( array( 
     624                        'date_query' => array( 
     625                                array( 
     626                                        'minute' => 56, 
     627                                ), 
     628                        ), 
     629                ) ); 
     630 
     631                $expected_dates = array( 
     632                        '2011-07-04 01:56:32', 
     633                ); 
     634 
     635                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     636        } 
     637 
     638        public function test_date_query_minute_expecting_noresults() { 
     639                if ( ! class_exists( 'WP_Date_Query' ) ) 
     640                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     641 
     642                $posts = $this->_get_query_result( array( 
     643                        'date_query' => array( 
     644                                array( 
     645                                        'minute' => 2, 
     646                                ), 
     647                        ), 
     648                ) ); 
     649 
     650                $this->assertCount( 0, $posts ); 
     651        } 
     652 
     653        public function test_date_query_second_expecting_results() { 
     654                if ( ! class_exists( 'WP_Date_Query' ) ) 
     655                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     656 
     657                $posts = $this->_get_query_result( array( 
     658                        'date_query' => array( 
     659                                array( 
     660                                        'second' => 21, 
     661                                ), 
     662                        ), 
     663                ) ); 
     664 
     665                $expected_dates = array( 
     666                        '2007-01-22 03:49:21', 
     667                ); 
     668 
     669                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     670        } 
     671 
     672        public function test_date_query_second_expecting_noresults() { 
     673                if ( ! class_exists( 'WP_Date_Query' ) ) 
     674                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     675 
     676                $posts = $this->_get_query_result( array( 
     677                        'date_query' => array( 
     678                                array( 
     679                                        'second' => 1, 
     680                                ), 
     681                        ), 
     682                ) ); 
     683 
     684                $this->assertCount( 0, $posts ); 
     685        } 
     686 
     687        public function test_date_query_between_two_times() { 
     688                if ( ! class_exists( 'WP_Date_Query' ) ) 
     689                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     690 
     691                $posts = $this->_get_query_result( array( 
     692                        'date_query' => array( 
     693                                array( 
     694                                        'hour'    => 9, 
     695                                        'minute'  => 0, 
     696                                        'compare' => '>=', 
     697                                ), 
     698                                array( 
     699                                        'hour'    => '17', 
     700                                        'minute'  => '0', 
     701                                        'compare' => '<=', 
     702                                ), 
     703                        ), 
     704                ) ); 
     705 
     706                $expected_dates = array( 
     707                        '1972-05-24 14:53:45', 
     708                        '2004-05-22 12:34:12', 
     709                        '2008-03-29 09:04:25', 
     710                        '2008-07-15 11:32:26', 
     711                        '2008-12-10 13:06:27', 
     712                        '2009-12-18 10:42:29', 
     713                        '2011-02-23 12:12:31', 
     714                        '2011-12-12 16:39:33', 
     715                        '2012-06-13 14:03:34', 
     716                        '2025-04-20 10:13:00', 
     717                ); 
     718 
     719                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     720        } 
     721 
     722        public function test_date_query_relation_or() { 
     723                if ( ! class_exists( 'WP_Date_Query' ) ) 
     724                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     725 
     726                $posts = $this->_get_query_result( array( 
     727                        'date_query' => array( 
     728                                array( 
     729                                        'hour' => 14, 
     730                                ), 
     731                                array( 
     732                                        'minute' => 34, 
     733                                ), 
     734                                'relation' => 'OR', 
     735                        ), 
     736                ) ); 
     737 
     738                $expected_dates = array( 
     739                        '1972-05-24 14:53:45', 
     740                        '2004-05-22 12:34:12', 
     741                        '2012-06-13 14:03:34', 
     742                ); 
     743 
     744                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     745        } 
     746 
     747        public function test_date_query_compare_greater_than_or_equal_to() { 
     748                if ( ! class_exists( 'WP_Date_Query' ) ) 
     749                        $this->markTestSkipped( 'WP_Date_Query is missing, skipping tests.' ); 
     750 
     751                $posts = $this->_get_query_result( array( 
     752                        'date_query' => array( 
     753                                array( 
     754                                        'hour' => 14, 
     755                                        'minute' => 34, 
     756                                ), 
     757                                'compare' => '>=', 
     758                        ), 
     759                ) ); 
     760 
     761                $expected_dates = array( 
     762                        '1972-05-24 14:53:45', 
     763                        '1984-07-28 19:28:56', 
     764                        '2003-05-27 22:45:07', 
     765                        '2005-12-31 23:59:20', 
     766                        '2007-05-16 17:32:22', 
     767                        '2009-06-11 21:30:28', 
     768                        '2010-06-17 17:09:30', 
     769                        '2011-12-12 16:39:33', 
     770                ); 
     771 
     772                $this->assertEquals( $expected_dates, wp_list_pluck( $posts, 'post_date' ) ); 
     773        } 
     774} 
     775 No newline at end of file