Make WordPress Core


Ignore:
Timestamp:
07/02/2023 08:02:45 AM (16 months ago)
Author:
audrasjb
Message:

Quick/Bulk Edit: Ensure scheduled posts are published when using Bulk Edit.

This changeset ensures scheduled posts are actually published when changing their status to "Published" using bulk edit. Also adds related unit tests.

Props siobhan, Clorith, webcommsat, cadic, oglekler, audrasjb, pavanpatil1.
Fixes #31635.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/admin/includesPost.php

    r56091 r56123  
    292292        $this->assertSame( 'aside', get_post_format( $post_ids[1] ) );
    293293        $this->assertFalse( get_post_format( $post_ids[2] ) );
     294    }
     295
     296    /**
     297     * @ticket 31635
     298     */
     299    public function test_bulk_edit_posts_should_publish_scheduled_post() {
     300        wp_set_current_user( self::$admin_id );
     301
     302        $post = self::factory()->post->create(
     303            array(
     304                'post_author'    => self::$author_ids[0],
     305                'comment_status' => 'closed',
     306                'ping_status'    => 'closed',
     307                'post_status'    => 'future',
     308                'post_date'      => gmdate( 'Y-m-d H:i:s', strtotime( '+1 month' ) ),
     309            )
     310        );
     311
     312        $request = array(
     313            'post_type'      => 'post',
     314            'post_author'    => -1,
     315            'ping_status'    => -1,
     316            'comment_status' => -1,
     317            '_status'        => 'publish',
     318            'post'           => array( $post ),
     319        );
     320
     321        bulk_edit_posts( $request );
     322
     323        $this->assertSame( 'publish', get_post_status( $post ) );
     324        $this->assertLessThanOrEqual( gmdate( 'Y-m-d H:i:s' ), get_post_time( 'Y-m-d H:i:s', false, $post ) );
     325    }
     326    /**
     327     * @ticket 31635
     328     */
     329    public function test_bulk_edit_posts_should_publish_draft_immediately() {
     330        wp_set_current_user( self::$admin_id );
     331
     332        // Create draft last edited a month ago
     333        $post = self::factory()->post->create(
     334            array(
     335                'post_author'    => self::$author_ids[0],
     336                'comment_status' => 'closed',
     337                'ping_status'    => 'closed',
     338                'post_status'    => 'draft',
     339                'post_date'      => gmdate( 'Y-m-d H:i:s', strtotime( '-1 month' ) ),
     340            )
     341        );
     342
     343        $request = array(
     344            'post_type'      => 'post',
     345            'post_author'    => -1,
     346            'ping_status'    => -1,
     347            'comment_status' => -1,
     348            '_status'        => 'publish',
     349            'post'           => array( $post ),
     350        );
     351
     352        bulk_edit_posts( $request );
     353
     354        $this->assertSame( 'publish', get_post_status( $post ) );
     355
     356        // Expect to be published within the last minute (to consider slow testing environment).
     357        $minute_before = gmdate( 'Y-m-d H:i:s', strtotime( '-1 minute' ) );
     358        $this->assertGreaterThanOrEqual( $minute_before, get_post_time( 'Y-m-d H:i:s', false, $post ) );
     359        $this->assertLessThanOrEqual( gmdate( 'Y-m-d H:i:s' ), get_post_time( 'Y-m-d H:i:s', false, $post ) );
    294360    }
    295361
Note: See TracChangeset for help on using the changeset viewer.