Make WordPress Core

Changeset 36077


Ignore:
Timestamp:
12/23/2015 07:38:29 PM (11 years ago)
Author:
boonebgorges
Message:

Move get_adjacent_post() tests to their own file.

See #35211.

Location:
trunk/tests/phpunit/tests
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/link.php

    r35497 r36077  
    9999
    100100        /**
    101          * @ticket 17807
    102          */
    103         function test_get_adjacent_post() {
    104                 // Need some sample posts to test adjacency
    105                 $post_one = self::factory()->post->create_and_get( array(
    106                         'post_title' => 'First',
    107                         'post_date' => '2012-01-01 12:00:00'
    108                 ) );
    109 
    110                 $post_two = self::factory()->post->create_and_get( array(
    111                         'post_title' => 'Second',
    112                         'post_date' => '2012-02-01 12:00:00'
    113                 ) );
    114 
    115                 $post_three = self::factory()->post->create_and_get( array(
    116                         'post_title' => 'Third',
    117                         'post_date' => '2012-03-01 12:00:00'
    118                 ) );
    119 
    120                 $post_four = self::factory()->post->create_and_get( array(
    121                         'post_title' => 'Fourth',
    122                         'post_date' => '2012-04-01 12:00:00'
    123                 ) );
    124 
    125                 // Assign some terms
    126                 wp_set_object_terms( $post_one->ID, 'wordpress', 'category', false );
    127                 wp_set_object_terms( $post_three->ID, 'wordpress', 'category', false );
    128 
    129                 wp_set_object_terms( $post_two->ID, 'plugins', 'post_tag', false );
    130                 wp_set_object_terms( $post_four->ID, 'plugins', 'post_tag', false );
    131 
    132                 // Test normal post adjacency
    133                 $this->go_to( get_permalink( $post_two->ID ) );
    134 
    135                 $this->assertEquals( $post_one, get_adjacent_post( false, '', true ) );
    136                 $this->assertEquals( $post_three, get_adjacent_post( false, '', false ) );
    137 
    138                 $this->assertNotEquals( $post_two, get_adjacent_post( false, '', true ) );
    139                 $this->assertNotEquals( $post_two, get_adjacent_post( false, '', false ) );
    140 
    141                 // Test category adjacency
    142                 $this->go_to( get_permalink( $post_one->ID ) );
    143 
    144                 $this->assertEquals( '', get_adjacent_post( true, '', true, 'category' ) );
    145                 $this->assertEquals( $post_three, get_adjacent_post( true, '', false, 'category' ) );
    146 
    147                 // Test tag adjacency
    148                 $this->go_to( get_permalink( $post_two->ID ) );
    149 
    150                 $this->assertEquals( '', get_adjacent_post( true, '', true, 'post_tag' ) );
    151                 $this->assertEquals( $post_four, get_adjacent_post( true, '', false, 'post_tag' ) );
    152 
    153                 // Test normal boundary post
    154                 $this->go_to( get_permalink( $post_two->ID ) );
    155 
    156                 $this->assertEquals( array( $post_one ), get_boundary_post( false, '', true ) );
    157                 $this->assertEquals( array( $post_four ), get_boundary_post( false, '', false ) );
    158 
    159                 // Test category boundary post
    160                 $this->go_to( get_permalink( $post_one->ID ) );
    161 
    162                 $this->assertEquals( array( $post_one ), get_boundary_post( true, '', true, 'category' ) );
    163                 $this->assertEquals( array( $post_three ), get_boundary_post( true, '', false, 'category' ) );
    164 
    165                 // Test tag boundary post
    166                 $this->go_to( get_permalink( $post_two->ID ) );
    167 
    168                 $this->assertEquals( array( $post_two ), get_boundary_post( true, '', true, 'post_tag' ) );
    169                 $this->assertEquals( array( $post_four ), get_boundary_post( true, '', false, 'post_tag' ) );
    170         }
    171 
    172         /**
    173          * @ticket 22112
    174          */
    175         function test_get_adjacent_post_exclude_self_term() {
    176                 // Bump term_taxonomy to mimic shared term offsets.
    177                 global $wpdb;
    178                 $wpdb->insert( $wpdb->term_taxonomy, array( 'taxonomy' => 'foo', 'term_id' => 12345, 'description' => '' ) );
    179 
    180                 $include = self::factory()->term->create( array(
    181                         'taxonomy' => 'category',
    182                         'name' => 'Include',
    183                 ) );
    184                 $exclude = self::factory()->category->create();
    185 
    186                 $one = self::factory()->post->create_and_get( array(
    187                         'post_date' => '2012-01-01 12:00:00',
    188                         'post_category' => array( $include, $exclude ),
    189                 ) );
    190 
    191                 $two = self::factory()->post->create_and_get( array(
    192                         'post_date' => '2012-01-02 12:00:00',
    193                         'post_category' => array(),
    194                 ) );
    195 
    196                 $three = self::factory()->post->create_and_get( array(
    197                         'post_date' => '2012-01-03 12:00:00',
    198                         'post_category' => array( $include, $exclude ),
    199                 ) );
    200 
    201                 $four = self::factory()->post->create_and_get( array(
    202                         'post_date' => '2012-01-04 12:00:00',
    203                         'post_category' => array( $include ),
    204                 ) );
    205 
    206                 $five = self::factory()->post->create_and_get( array(
    207                         'post_date' => '2012-01-05 12:00:00',
    208                         'post_category' => array( $include, $exclude ),
    209                 ) );
    210 
    211                 // First post
    212                 $this->go_to( get_permalink( $one ) );
    213                 $this->assertEquals( $two, get_adjacent_post( false, array(), false ) );
    214                 $this->assertEquals( $three, get_adjacent_post( true, array(), false ) );
    215                 $this->assertEquals( $two, get_adjacent_post( false, array( $exclude ), false ) );
    216                 $this->assertEquals( $four, get_adjacent_post( true, array( $exclude ), false ) );
    217                 $this->assertEmpty( get_adjacent_post( false, array(), true ) );
    218 
    219                 // Fourth post
    220                 $this->go_to( get_permalink( $four ) );
    221                 $this->assertEquals( $five, get_adjacent_post( false, array(), false ) );
    222                 $this->assertEquals( $five, get_adjacent_post( true, array(), false ) );
    223                 $this->assertEmpty( get_adjacent_post( false, array( $exclude ), false ) );
    224                 $this->assertEmpty( get_adjacent_post( true, array( $exclude ), false ) );
    225 
    226                 $this->assertEquals( $three, get_adjacent_post( false, array(), true ) );
    227                 $this->assertEquals( $three, get_adjacent_post( true, array(), true ) );
    228                 $this->assertEquals( $two, get_adjacent_post( false, array( $exclude ), true ) );
    229                 $this->assertEmpty( get_adjacent_post( true, array( $exclude ), true ) );
    230 
    231                 // Last post
    232                 $this->go_to( get_permalink( $five ) );
    233                 $this->assertEquals( $four, get_adjacent_post( false, array(), true ) );
    234                 $this->assertEquals( $four, get_adjacent_post( true, array(), true ) );
    235                 $this->assertEquals( $four, get_adjacent_post( false, array( $exclude ), true ) );
    236                 $this->assertEquals( $four, get_adjacent_post( true, array( $exclude ), true ) );
    237                 $this->assertEmpty( get_adjacent_post( false, array(), false ) );
    238         }
    239 
    240         /**
    241          * @ticket 32833
    242          */
    243         public function test_get_adjacent_post_excluded_terms() {
    244                 register_taxonomy( 'wptests_tax', 'post' );
    245 
    246                 $t = self::factory()->term->create( array(
    247                         'taxonomy' => 'wptests_tax',
    248                 ) );
    249 
    250                 $p1 = self::factory()->post->create( array( 'post_date' => '2015-08-27 12:00:00' ) );
    251                 $p2 = self::factory()->post->create( array( 'post_date' => '2015-08-26 12:00:00' ) );
    252                 $p3 = self::factory()->post->create( array( 'post_date' => '2015-08-25 12:00:00' ) );
    253 
    254                 wp_set_post_terms( $p2, array( $t ), 'wptests_tax' );
    255 
    256                 // Fake current page.
    257                 $_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null;
    258                 $GLOBALS['post'] = get_post( $p1 );
    259 
    260                 $found = get_adjacent_post( false, array( $t ), true, 'wptests_tax' );
    261 
    262                 if ( ! is_null( $_post ) ) {
    263                         $GLOBALS['post'] = $_post;
    264                 } else {
    265                         unset( $GLOBALS['post'] );
    266                 }
    267 
    268                 // Should skip $p2, which belongs to $t.
    269                 $this->assertEquals( $p3, $found->ID );
    270         }
    271 
    272         /**
    273          * @ticket 32833
    274          */
    275         public function test_get_adjacent_post_excluded_terms_should_not_require_posts_to_have_terms_in_any_taxonomy() {
    276                 register_taxonomy( 'wptests_tax', 'post' );
    277 
    278                 $t = self::factory()->term->create( array(
    279                         'taxonomy' => 'wptests_tax',
    280                 ) );
    281 
    282                 $p1 = self::factory()->post->create( array( 'post_date' => '2015-08-27 12:00:00' ) );
    283                 $p2 = self::factory()->post->create( array( 'post_date' => '2015-08-26 12:00:00' ) );
    284                 $p3 = self::factory()->post->create( array( 'post_date' => '2015-08-25 12:00:00' ) );
    285 
    286                 wp_set_post_terms( $p2, array( $t ), 'wptests_tax' );
    287 
    288                 // Make sure that $p3 doesn't have the 'Uncategorized' category.
    289                 wp_delete_object_term_relationships( $p3, 'category' );
    290 
    291                 // Fake current page.
    292                 $_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null;
    293                 $GLOBALS['post'] = get_post( $p1 );
    294 
    295                 $found = get_adjacent_post( false, array( $t ), true, 'wptests_tax' );
    296 
    297                 if ( ! is_null( $_post ) ) {
    298                         $GLOBALS['post'] = $_post;
    299                 } else {
    300                         unset( $GLOBALS['post'] );
    301                 }
    302 
    303                 // Should skip $p2, which belongs to $t.
    304                 $this->assertEquals( $p3, $found->ID );
    305         }
    306 
    307         /**
    308101         * @ticket 30910
    309102         */
  • trunk/tests/phpunit/tests/link/getAdjacentPost.php

    r36076 r36077  
    22/**
    33 * @group link
     4 * @covers ::get_adjacent_link
    45 */
    5 class Tests_Link extends WP_UnitTestCase {
    6 
    7         function _get_pagenum_link_cb( $url ) {
    8                 return $url . '/WooHoo';
    9         }
    10 
    11         /**
    12          * @ticket 8847
    13          */
    14         function test_get_pagenum_link_case_insensitivity() {
    15                 $old_req_uri = $_SERVER['REQUEST_URI'];
    16 
    17                 $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
    18 
    19                 add_filter( 'home_url', array( $this, '_get_pagenum_link_cb' ) );
    20                 $_SERVER['REQUEST_URI'] = '/woohoo';
    21                 $paged = get_pagenum_link( 2 );
    22 
    23                 remove_filter( 'home_url', array( $this, '_get_pagenum_link_cb' ) );
    24                 $this->assertEquals( $paged, home_url( '/WooHoo/page/2/' ) );
    25 
    26                 $_SERVER['REQUEST_URI'] = $old_req_uri;
    27         }
    28 
    29         function test_wp_get_shortlink() {
    30                 $post_id = self::factory()->post->create();
    31                 $post_id2 = self::factory()->post->create();
    32 
    33                 // Basic case
    34                 $this->assertEquals( get_permalink( $post_id ), wp_get_shortlink( $post_id, 'post' ) );
    35 
    36                 unset( $GLOBALS['post'] );
    37 
    38                 // Global post is not set
    39                 $this->assertEquals( '', wp_get_shortlink( 0, 'post' ) );
    40                 $this->assertEquals( '', wp_get_shortlink( 0 ) );
    41                 $this->assertEquals( '', wp_get_shortlink() );
    42 
    43                 $GLOBALS['post'] = get_post( $post_id );
    44 
    45                 // Global post is set
    46                 $this->assertEquals( get_permalink( $post_id ), wp_get_shortlink( 0, 'post' ) );
    47                 $this->assertEquals( get_permalink( $post_id ), wp_get_shortlink( 0 ) );
    48                 $this->assertEquals( get_permalink( $post_id ), wp_get_shortlink() );
    49 
    50                 // Not the global post
    51                 $this->assertEquals( get_permalink( $post_id2 ), wp_get_shortlink( $post_id2, 'post' ) );
    52 
    53                 unset( $GLOBALS['post'] );
    54 
    55                 // Global post is not set, once again
    56                 $this->assertEquals( '', wp_get_shortlink( 0, 'post' ) );
    57                 $this->assertEquals( '', wp_get_shortlink( 0 ) );
    58                 $this->assertEquals( '', wp_get_shortlink() );
    59 
    60                 $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
    61 
    62                 // With a permalink structure set, get_permalink() will no longer match.
    63                 $this->assertNotEquals( get_permalink( $post_id ), wp_get_shortlink( $post_id, 'post' ) );
    64                 $this->assertEquals( home_url( '?p=' . $post_id ), wp_get_shortlink( $post_id, 'post' ) );
    65 
    66                 // Global post and permalink structure are set
    67                 $GLOBALS['post'] = get_post( $post_id );
    68                 $this->assertEquals( home_url( '?p=' . $post_id ), wp_get_shortlink( 0, 'post' ) );
    69                 $this->assertEquals( home_url( '?p=' . $post_id ), wp_get_shortlink( 0 ) );
    70                 $this->assertEquals( home_url( '?p=' . $post_id ), wp_get_shortlink() );
    71         }
    72 
    73         function test_wp_get_shortlink_with_page() {
    74                 $post_id = self::factory()->post->create( array( 'post_type' => 'page' ) );
    75 
    76                 // Basic case
    77                 // Don't test against get_permalink() since it uses ?page_id= for pages.
    78                 $this->assertEquals( home_url( '?p=' . $post_id ), wp_get_shortlink( $post_id, 'post' ) );
    79 
    80                 $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
    81 
    82                 $this->assertEquals( home_url( '?p=' . $post_id ), wp_get_shortlink( $post_id, 'post' ) );
    83         }
    84 
    85         /**
    86          * @ticket 26871
    87          */
    88         function test_wp_get_shortlink_with_home_page() {
    89                 $post_id = self::factory()->post->create( array( 'post_type' => 'page' ) );
    90                 update_option( 'show_on_front', 'page' );
    91                 update_option( 'page_on_front', $post_id );
    92 
    93                 $this->assertEquals( home_url( '/' ), wp_get_shortlink( $post_id, 'post' ) );
    94 
    95                 $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
    96 
    97                 $this->assertEquals( home_url( '/' ), wp_get_shortlink( $post_id, 'post' ) );
    98         }
    99 
     6class Tests_Link_GetAdjacentPost extends WP_UnitTestCase {
    1007        /**
    1018         * @ticket 17807
    1029         */
    103         function test_get_adjacent_post() {
     10        public function test_get_adjacent_post() {
    10411                // Need some sample posts to test adjacency
    10512                $post_one = self::factory()->post->create_and_get( array(
     
    304211                $this->assertEquals( $p3, $found->ID );
    305212        }
    306 
    307         /**
    308          * @ticket 30910
    309          */
    310         public function test_get_permalink_should_not_reveal_post_name_for_post_with_post_status_future() {
    311                 update_option( 'permalink_structure','/%year%/%monthnum%/%day%/%postname%/' );
    312 
    313                 flush_rewrite_rules();
    314 
    315                 $p = self::factory()->post->create( array(
    316                         'post_status' => 'publish',
    317                         'post_date'   => strftime( '%Y-%m-%d %H:%M:%S', strtotime( '+1 day' ) )
    318                 ) );
    319 
    320                 $non_pretty_permalink = add_query_arg( 'p', $p, trailingslashit( home_url() ) );
    321 
    322                 $this->assertEquals( $non_pretty_permalink, get_permalink( $p ) );
    323         }
    324 
    325         /**
    326          * @ticket 30910
    327          */
    328         public function test_get_permalink_should_not_reveal_post_name_for_cpt_with_post_status_future() {
    329                 update_option( 'permalink_structure','/%year%/%monthnum%/%day%/%postname%/' );
    330 
    331                 register_post_type( 'wptests_pt', array( 'public' => true ) );
    332 
    333                 flush_rewrite_rules();
    334 
    335                 $p = self::factory()->post->create( array(
    336                         'post_status' => 'future',
    337                         'post_type'   => 'wptests_pt',
    338                         'post_date'   => strftime( '%Y-%m-%d %H:%M:%S', strtotime( '+1 day' ) )
    339                 ) );
    340 
    341                 $non_pretty_permalink = add_query_arg( array(
    342                         'post_type' => 'wptests_pt',
    343                         'p' => $p,
    344                 ), trailingslashit( home_url() ) );
    345 
    346                 $this->assertEquals( $non_pretty_permalink, get_permalink( $p ) );
    347         }
    348 
    349         /**
    350          * @ticket 1914
    351          */
    352         public function test_unattached_attachment_has_a_pretty_permalink() {
    353                 $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
    354 
    355                 $attachment_id = self::factory()->attachment->create_object( 'image.jpg', 0, array(
    356                         'post_mime_type' => 'image/jpeg',
    357                         'post_type' => 'attachment',
    358                         'post_title' => 'An Attachment!',
    359                         'post_status' => 'inherit',
    360                 ) );
    361 
    362                 $attachment = get_post( $attachment_id );
    363 
    364                 $this->assertSame( home_url( user_trailingslashit( $attachment->post_name ) ), get_permalink( $attachment_id ) );
    365         }
    366 
    367         /**
    368          * @ticket 1914
    369          */
    370         public function test_attachment_attached_to_non_existent_post_type_has_a_pretty_permalink() {
    371                 global $wp_post_types;
    372 
    373                 $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
    374 
    375                 register_post_type( 'not_a_post_type', array( 'public' => true ) );
    376 
    377                 flush_rewrite_rules();
    378 
    379                 $post_id = self::factory()->post->create( array( 'post_type' => 'not_a_post_type' ) );
    380 
    381                 $attachment_id = self::factory()->attachment->create_object( 'image.jpg', $post_id, array(
    382                         'post_mime_type' => 'image/jpeg',
    383                         'post_type' => 'attachment',
    384                         'post_title' => 'An Attachment!',
    385                         'post_status' => 'inherit',
    386                 ) );
    387 
    388                 $attachment = get_post( $attachment_id );
    389 
    390                 $this->assertSame( get_permalink( $post_id ) . user_trailingslashit( $attachment->post_name ), get_permalink( $attachment_id ) );
    391 
    392                 foreach( $wp_post_types as $id => $pt ) {
    393                         if ( 'not_a_post_type' === $pt->name ) {
    394                                 unset( $wp_post_types[ $id ] );
    395                                 break;
    396                         }
    397                 }
    398 
    399                 $this->assertSame( home_url( user_trailingslashit( $attachment->post_name ) ), get_permalink( $attachment_id ) );
    400         }
    401213}
Note: See TracChangeset for help on using the changeset viewer.