WordPress.org

Make WordPress Core

Ticket #16215: revisions.php

File revisions.php, 2.6 KB (added by adamsilverstein, 15 months ago)

1st draft unit test for #16215

Line 
1<?php
2/**
3 * @group revisions
4 */
5class Tests_Revisions extends WP_UnitTestCase {
6
7         function setUp() {
8                parent::setUp();
9
10        }
11
12        function tearDown() {
13                parent::tearDown();
14        }
15        //function to get correctly stored user_ud if available (patch)
16        protected function _get_revision_author( $revision ) {
17        if ( ! $revision_author_id = get_post_meta( $revision->ID, '_edit_last', true ) ) { 
18                        $revision_author_id = $revision->post_author; 
19                }
20        return $revision_author_id;
21        }
22/**
23 * bug 16215
24 */
25        function test_revision_user_correct() {
26                $user_id_1 = $this->factory->user->create( array( 'role' => 'administrator', 'user_login' => 'user 1' ) );
27               
28                wp_set_current_user( $user_id_1 );
29                $post = array( 'post_author' => $user_id_1, 'post_title' => 'revisions' );
30                $post_id = wp_insert_post($post);       //create a new post
31                wp_publish_post( $post_id );            //and publish it
32                wp_update_post( array( 'post_content'   => 'revised by user_1', 'ID' => $post_id ) );   //update content
33
34                $on_user = 0;
35                $revisions = wp_get_post_revisions( $post_id );
36                $expected_post_author_ids = $arrayName = array( $user_id_1, $user_id_1, ); //two revisions so far
37                foreach ( $revisions as $revision ) {
38                        $this->assertEquals( $expected_post_author_ids[ $on_user++ ], $this->_get_revision_author( $revision ));
39                }
40
41                //second user revisions
42                $user_id_2 = $this->factory->user->create( array( 'role' => 'administrator', 'user_login' => 'user 2'  ) );
43                wp_set_current_user( $user_id_2 );
44                wp_update_post( array( 'post_content'   => 'revised by user_2', 'ID' => $post_id ) );
45                $revisions = wp_get_post_revisions( $post_id );
46                $expected_post_author_ids = $arrayName = array( $user_id_2, $user_id_1, $user_id_1,  ); //three revisions
47                $on_user = 0;
48                foreach ( $revisions as $revision ) {
49                        if ( wp_is_post_revision( $revision )&& !wp_is_post_autosave( $revision ) ) {
50                                $this->assertEquals( $expected_post_author_ids[ $on_user++ ], $this->_get_revision_author( $revision ));
51                        }
52                }
53               
54                //third user revisions
55                $user_id_3 = $this->factory->user->create( array( 'role' => 'administrator', 'user_login' => 'user 3'  ) );
56                wp_set_current_user( $user_id_3 );
57                wp_update_post( array( 'post_content'   => 'revised by user_3', 'ID' => $post_id ) );
58                //wp_save_post_revision( $post_id );
59                $revisions = wp_get_post_revisions( $post_id );
60                $expected_post_author_ids = $arrayName = array( $user_id_3, $user_id_2, $user_id_1, $user_id_1,  ); //four revisions
61                $on_user = 0;
62                foreach ( $revisions as $revision ) {
63                        if ( wp_is_post_revision( $revision )&& !wp_is_post_autosave( $revision ) ) {
64                                $this->assertEquals( $expected_post_author_ids[ $on_user++ ], $this->_get_revision_author( $revision ));
65                        }
66                }
67        }
68}