WordPress.org

Make WordPress Core

Ticket #34060: 34060.diff

File 34060.diff, 3.7 KB (added by boonebgorges, 5 years ago)
  • src/wp-includes/post-functions.php

    diff --git a/src/wp-includes/post-functions.php b/src/wp-includes/post-functions.php
    index 58961fe..34452c4 100644
    a b function is_post_type_viewable( $post_type_object ) { 
    16101610 */
    16111611function get_posts( $args = null ) {
    16121612        $defaults = array(
    1613                 'numberposts' => 5, 'offset' => 0,
     1613                'numberposts' => 5,
    16141614                'category' => 0, 'orderby' => 'date',
    16151615                'order' => 'DESC', 'include' => array(),
    16161616                'exclude' => array(), 'meta_key' => '',
  • new file tests/phpunit/tests/post/getPosts.php

    diff --git a/tests/phpunit/tests/post/getPosts.php b/tests/phpunit/tests/post/getPosts.php
    new file mode 100644
    index 0000000..496a032
    - +  
     1<?php
     2
     3/**
     4 * @group post
     5 * @group query
     6 */
     7class Tests_Post_GetPosts extends WP_UnitTestCase {
     8        public function test_offset_should_be_null_by_default() {
     9                $p1 = self::factory()->post->create( array(
     10                        'post_date' => '2015-04-04 04:04:04',
     11                ) );
     12                $p2 = self::factory()->post->create( array(
     13                        'post_date' => '2014-04-04 04:04:04',
     14                ) );
     15
     16                $found = get_posts( array(
     17                        'numberposts' => 1,
     18                        'orderby' => 'date',
     19                        'order' => 'DESC',
     20                        'fields' => 'ids',
     21                ) );
     22
     23                $this->assertSame( array( $p1 ), $found );
     24        }
     25
     26        public function test_offset_0_should_be_respected() {
     27                $p1 = self::factory()->post->create( array(
     28                        'post_date' => '2015-04-04 04:04:04',
     29                ) );
     30                $p2 = self::factory()->post->create( array(
     31                        'post_date' => '2014-04-04 04:04:04',
     32                ) );
     33
     34                $found = get_posts( array(
     35                        'numberposts' => 1,
     36                        'orderby' => 'date',
     37                        'order' => 'DESC',
     38                        'fields' => 'ids',
     39                        'offset' => 0,
     40                ) );
     41
     42                $this->assertSame( array( $p1 ), $found );
     43        }
     44
     45        public function test_offset_non_0_should_be_respected() {
     46                $p1 = self::factory()->post->create( array(
     47                        'post_date' => '2015-04-04 04:04:04',
     48                ) );
     49                $p2 = self::factory()->post->create( array(
     50                        'post_date' => '2014-04-04 04:04:04',
     51                ) );
     52
     53                $found = get_posts( array(
     54                        'numberposts' => 1,
     55                        'orderby' => 'date',
     56                        'order' => 'DESC',
     57                        'fields' => 'ids',
     58                        'offset' => 1,
     59                ) );
     60
     61                $this->assertSame( array( $p2 ), $found );
     62        }
     63
     64        /**
     65         * @ticket 34060
     66         */
     67        public function test_paged_should_not_be_overridden_by_default_offset() {
     68                $p1 = self::factory()->post->create( array(
     69                        'post_date' => '2015-04-04 04:04:04',
     70                ) );
     71                $p2 = self::factory()->post->create( array(
     72                        'post_date' => '2014-04-04 04:04:04',
     73                ) );
     74
     75                $found = get_posts( array(
     76                        'orderby' => 'date',
     77                        'order' => 'DESC',
     78                        'fields' => 'ids',
     79                        'paged' => 2,
     80                        'posts_per_page' => 1,
     81                ) );
     82
     83                $this->assertSame( array( $p2 ), $found );
     84        }
     85
     86        public function test_explicit_offset_0_should_override_paged() {
     87                $p1 = self::factory()->post->create( array(
     88                        'post_date' => '2015-04-04 04:04:04',
     89                ) );
     90                $p2 = self::factory()->post->create( array(
     91                        'post_date' => '2014-04-04 04:04:04',
     92                ) );
     93
     94                $found = get_posts( array(
     95                        'orderby' => 'date',
     96                        'order' => 'DESC',
     97                        'fields' => 'ids',
     98                        'paged' => 2,
     99                        'posts_per_page' => 1,
     100                        'offset' => 0,
     101                ) );
     102
     103                $this->assertSame( array( $p1 ), $found );
     104        }
     105
     106        public function test_explicit_offset_non_0_should_override_paged() {
     107                $p1 = self::factory()->post->create( array(
     108                        'post_date' => '2015-04-04 04:04:04',
     109                ) );
     110                $p2 = self::factory()->post->create( array(
     111                        'post_date' => '2014-04-04 04:04:04',
     112                ) );
     113                $p3 = self::factory()->post->create( array(
     114                        'post_date' => '2013-04-04 04:04:04',
     115                ) );
     116
     117                $found = get_posts( array(
     118                        'orderby' => 'date',
     119                        'order' => 'DESC',
     120                        'fields' => 'ids',
     121                        'paged' => 2,
     122                        'posts_per_page' => 1,
     123                        'offset' => 2,
     124                ) );
     125
     126                $this->assertSame( array( $p3 ), $found );
     127        }
     128}