WordPress.org

Make WordPress Core

Ticket #47777: 47777.2.diff

File 47777.2.diff, 3.4 KB (added by donmhico, 10 months ago)

Add unit test

  • src/wp-includes/post.php

    diff --git src/wp-includes/post.php src/wp-includes/post.php
    index 0e09610521..4b1e177273 100644
    function get_lastpostmodified( $timezone = 'server', $post_type = 'any' ) { 
    64436443
    64446444        $lastpostmodified = _get_last_post_time( $timezone, 'modified', $post_type );
    64456445
    6446         $lastpostdate = get_lastpostdate( $timezone );
     6446        $lastpostdate = get_lastpostdate( $timezone, $post_type );
    64476447        if ( $lastpostdate > $lastpostmodified ) {
    64486448                $lastpostmodified = $lastpostdate;
    64496449        }
    function get_lastpostmodified( $timezone = 'server', $post_type = 'any' ) { 
    64526452         * Filters the most recent time that a post was modified.
    64536453         *
    64546454         * @since 2.3.0
     6455         * @since 5.4.0 - Add `$post_type` as the third parameter.
    64556456         *
    64566457         * @param string|false $lastpostmodified The most recent time that a post was modified, in 'Y-m-d H:i:s' format.
    64576458         *                                       False on failure.
    64586459         * @param string       $timezone         Location to use for getting the post modified date.
    64596460         *                                       See get_lastpostdate() for accepted `$timezone` values.
     6461         * @param string       $post_type        The post type to check.
    64606462         */
    6461         return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone );
     6463        return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone, $post_type );
    64626464}
    64636465
    64646466/**
  • new file tests/phpunit/tests/post/getLastPostModified.php

    diff --git tests/phpunit/tests/post/getLastPostModified.php tests/phpunit/tests/post/getLastPostModified.php
    new file mode 100644
    index 0000000000..ccb586c594
    - +  
     1<?php
     2
     3/**
     4 * @group post
     5 */
     6class Tests_Post_GetLastPostModified extends WP_UnitTestCase {
     7        /**
     8         * @ticket 47777
     9         */
     10        public function test_get_lastpostmodified() {
     11                $post_post_date          = '2018-01-30 16:09:28';
     12                $post_post_modified_date = '2018-02-28 17:10:29';
     13
     14                $book_post_date          = '2019-03-30 18:11:30';
     15                $book_post_modified_date = '2019-04-30 19:12:31';
     16
     17                // Register book post type.
     18                register_post_type( 'book', array( 'has_archive' => true ) );
     19
     20                // Create a simple post.
     21                $simple_post_id = self::factory()->post->create(
     22                        array(
     23                                'post_title'    => 'Simple Post',
     24                                'post_type'     => 'post',
     25                                'post_date'     => $post_post_date,
     26                        )
     27                );
     28
     29                // Create custom type post
     30                $book_cpt_id = self::factory()->post->create(
     31                        array(
     32                                'post_title'    => 'Book CPT',
     33                                'post_type'     => 'book',
     34                                'post_date'     => $book_post_date
     35                        )
     36                );
     37
     38                // Update `post_modified` and `post_modified_gmt`.
     39                global $wpdb;
     40
     41                $wpdb->update(
     42                        $wpdb->posts,
     43                        array(
     44                                'post_modified'     => $post_post_modified_date,
     45                                'post_modified_gmt' => $post_post_modified_date,
     46                        ),
     47                        array(
     48                                'ID' => $simple_post_id,
     49                        )
     50                );
     51
     52                $wpdb->update(
     53                        $wpdb->posts,
     54                        array(
     55                                'post_modified'     => $book_post_modified_date,
     56                                'post_modified_gmt' => $book_post_modified_date,
     57                        ),
     58                        array(
     59                                'ID' => $book_cpt_id,
     60                        )
     61                );
     62
     63                // Delete cache to get the updated modified date.
     64                wp_cache_delete( $simple_post_id, 'posts' );
     65                wp_cache_delete( $book_cpt_id, 'posts' );
     66
     67                $post_lastpost_modified = get_lastpostmodified( 'blog', 'post' );
     68                $book_lastpost_modified = get_lastpostmodified( 'blog', 'book' );
     69
     70                $this->assertEquals( $post_post_modified_date, $post_lastpost_modified );
     71                $this->assertEquals( $book_post_modified_date, $book_lastpost_modified );
     72        }
     73}