Changeset 1212 in tests
- Timestamp:
- 02/14/2013 02:07:04 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/post/revisions.php
r1211 r1212 6 6 */ 7 7 class Tests_Post_Revisions extends WP_UnitTestCase { 8 9 function setUp() { 10 parent::setUp(); 11 $this->post_type = rand_str( 20 ); 12 } 13 14 function tearDown() { 15 parent::tearDown(); 16 unset( $GLOBALS['wp_post_types'][ $this->post_type ] ); 17 } 18 8 19 /** 9 20 * Note: Test needs reviewing when #16215 is fixed because I'm not sure the test current tests the "correct" behavior … … 12 23 */ 13 24 function test_revision_restore_updates_edit_last_post_meta() { 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 25 $admin_user_id = $this->factory->user->create( array( 'role' => 'administrator' ) ); 26 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 27 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 28 29 //create a post as Author 30 wp_set_current_user( $author_user_id ); 31 $post_id = $this->factory->post->create( array( 'post_type' => 'post', 'post_content' => 'I cant spel werds.' ) ); 32 33 //update post as Editor 34 wp_set_current_user( $editor_user_id ); 35 wp_update_post( array( 'post_content' => 'The Editor was in fixing your typos.', 'ID' => $post_id ) ); 36 37 //restore back as Admin 38 wp_set_current_user( $admin_user_id ); 39 $revisions = wp_get_post_revisions( $post_id ); 40 $this->assertEquals( count( $revisions ), 1 ); 41 42 $lastrevision = end( $revisions ); 43 $this->assertEquals( $lastrevision->post_content, 'I cant spel werds.' ); 44 // #16215 45 $this->assertEquals( $lastrevision->post_author, $author_user_id ); 46 47 wp_restore_post_revision( $lastrevision->ID ); 48 49 //is post_meta correctly set to revision author 50 $this->assertEquals( get_post_meta( $post_id, '_edit_last', true ), $author_user_id ); //after restoring user 40 51 } 41 52 … … 46 57 function test_revision_dont_save_revision_if_unchanged() { 47 58 $post_id = $this->factory->post->create( array( 'post_title' => 'some-post', 'post_type' => 'post', 'post_content' => 'some_content' ) ); 48 59 49 60 wp_update_post( array( 'post_content' => 'some updated content', 'ID' => $post_id ) ); //1st revision 50 61 $this->assertEquals( 1, count( wp_get_post_revisions( $post_id ) ) ); //should be 1 revision so far 51 62 52 63 //update the post 53 64 wp_update_post( array( 'post_content' => 'new update for some updated content', 'ID' => $post_id ) ); //2nd revision 54 65 $this->assertEquals( 2, count( wp_get_post_revisions( $post_id ) ) ); //should be 2 revision so far 55 66 56 67 //next try to save another identical update, tests for patch that prevents storing duplicates 57 68 wp_update_post( array( 'post_content' => 'new update for some updated content', 'ID' => $post_id ) ); //content unchanged, shouldn't save 58 69 $this->assertEquals( 2, count( wp_get_post_revisions( $post_id ) ) ); //should still be 2 revision 59 70 60 71 //next try to save another update, same content, but new ttile, should save revision 61 72 wp_update_post( array( 'post_title' => 'some-post-changed', 'post_content' => 'new update for some updated content', 'ID' => $post_id ) ); 62 73 $this->assertEquals( 3, count( wp_get_post_revisions( $post_id ) ) ); //should be 3 revision 63 74 64 75 //next try to save another identical update 65 76 wp_update_post( array( 'post_title' => 'some-post-changed', 'post_content' => 'new update for some updated content', 'ID' => $post_id ) ); //content unchanged, shouldn't save 66 77 $this->assertEquals( 3, count( wp_get_post_revisions( $post_id ) ) ); //should still be 3 revision 67 78 } 79 80 /** 81 * Tests the Caps used in the action=view case of wp-admin/revision.php 82 * @ticket 16847 83 */ 84 function test_revision_view_caps_post() { 85 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 86 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 87 88 //create a post as Editor 89 wp_set_current_user( $editor_user_id ); 90 $post_id = $this->factory->post->create( array( 'post_type' => 'post' ) ); 91 wp_update_post( array( 'post_content' => 'This content is much better', 'ID' => $post_id ) ); 92 93 $revisions = wp_get_post_revisions( $post_id ); 94 $this->assertEquals( count( $revisions ), 1 ); 95 $this->assertTrue( current_user_can( 'read_post', $post_id ) ); 96 97 foreach ( $revisions as $revision ) { 98 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 99 } 100 101 // Author should be able to view the revisions fine 102 wp_set_current_user( $author_user_id ); 103 foreach ( $revisions as $revision ) { 104 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 105 } 106 } 107 108 /** 109 * Tests the Caps used in the action=restore case of wp-admin/revision.php 110 * @ticket 16847 111 */ 112 function test_revision_restore_caps_post() { 113 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 114 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 115 116 //create a post as Editor 117 wp_set_current_user( $editor_user_id ); 118 $post_id = $this->factory->post->create( array( 'post_type' => 'post' ) ); 119 wp_update_post( array( 'post_content' => 'This content is much better', 'ID' => $post_id ) ); 120 121 $revisions = wp_get_post_revisions( $post_id ); 122 $this->assertEquals( count( $revisions ), 1 ); 123 foreach ( $revisions as $revision ) { 124 $this->assertTrue( current_user_can( 'edit_post', $revision->post_parent ) ); 125 } 126 127 // Author shouldn't be able to restore the revisions 128 wp_set_current_user( $author_user_id ); 129 foreach ( $revisions as $revision ) { 130 $this->assertFalse( current_user_can( 'edit_post', $revision->post_parent ) ); 131 } 132 } 133 134 /** 135 * Tests the Caps used in the action=diff case of wp-admin/revision.php 136 * @ticket 16847 137 */ 138 function test_revision_diff_caps_post() { 139 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 140 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 141 142 //create a post as Editor 143 wp_set_current_user( $editor_user_id ); 144 $post_id = $this->factory->post->create( array( 'post_type' => 'post' ) ); 145 wp_update_post( array( 'post_content' => 'This content is much better', 'ID' => $post_id ) ); 146 wp_update_post( array( 'post_content' => 'This content is even better', 'ID' => $post_id ) ); 147 148 // Diff checks if you can read both left and right revisions 149 $revisions = wp_get_post_revisions( $post_id ); 150 $this->assertEquals( count( $revisions ), 2 ); 151 foreach ( $revisions as $revision ) { 152 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 153 } 154 155 // Author should be able to diff the revisions fine 156 wp_set_current_user( $author_user_id ); 157 foreach ( $revisions as $revision ) { 158 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 159 } 160 } 161 162 /** 163 * Tests the Caps used in the action=view case of wp-admin/revision.php with a CPT with Custom Capabilities 164 * @ticket 16847 165 */ 166 function test_revision_view_caps_cpt() { 167 register_post_type( $this->post_type, array( 168 'capability_type' => 'event', 169 'map_meta_cap' => true, 170 'supports' => array( 'revisions' ), 171 ) ); 172 173 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 174 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 175 176 //create a post as Editor 177 wp_set_current_user( $editor_user_id ); 178 $post_id = $this->factory->post->create( array( 'post_type' => $this->post_type ) ); 179 wp_update_post( array( 'post_content' => 'This content is much better', 'ID' => $post_id ) ); 180 181 $revisions = wp_get_post_revisions( $post_id ); 182 $this->assertEquals( count( $revisions ), 1 ); 183 $this->assertTrue( current_user_can( 'read_post', $post_id ) ); 184 185 foreach ( $revisions as $revision ) { 186 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 187 } 188 189 // Author should be able to view the revisions fine 190 wp_set_current_user( $author_user_id ); 191 foreach ( $revisions as $revision ) { 192 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 193 } 194 } 195 196 /** 197 * Tests the Caps used in the action=restore case of wp-admin/revision.php 198 * @ticket 16847 199 */ 200 function test_revision_restore_caps_cpt() { 201 register_post_type( $this->post_type, array( 202 'capability_type' => 'event', 203 'map_meta_cap' => true, 204 'supports' => array( 'revisions' ), 205 ) ); 206 207 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 208 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 209 210 // The minimum extra caps needed for this test normally you would give the role all the relevant caps. 211 $cpt_cap_map = array( 212 'edit_published_posts' => 'edit_published_events', 213 ); 214 215 $editor_user = new WP_User( $editor_user_id ); 216 foreach( $cpt_cap_map as $post_cap => $cpt_cap ) { 217 if ( $editor_user->has_cap( $post_cap ) ) 218 $editor_user->add_cap( $cpt_cap ); 219 } 220 221 //create a post as Editor 222 wp_set_current_user( $editor_user_id ); 223 $post_id = $this->factory->post->create( array( 'post_type' => $this->post_type ) ); 224 wp_update_post( array( 'post_content' => 'This content is much better', 'ID' => $post_id ) ); 225 226 $revisions = wp_get_post_revisions( $post_id ); 227 $this->assertEquals( count( $revisions ), 1 ); 228 foreach ( $revisions as $revision ) { 229 $this->assertTrue( current_user_can( 'edit_post', $revision->post_parent ) ); 230 } 231 232 // Author shouldn't be able to restore the revisions 233 wp_set_current_user( $author_user_id ); 234 foreach ( $revisions as $revision ) { 235 $this->assertFalse( current_user_can( 'edit_post', $revision->post_parent ) ); 236 } 237 } 238 239 /** 240 * Tests the Caps used in the action=diff case of wp-admin/revision.php 241 * @ticket 16847 242 */ 243 function test_revision_diff_caps_cpt() { 244 register_post_type( $this->post_type, array( 245 'capability_type' => 'event', 246 'map_meta_cap' => true, 247 'supports' => array( 'revisions' ), 248 ) ); 249 250 $author_user_id = $this->factory->user->create( array( 'role' => 'author' ) ); 251 $editor_user_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 252 253 //create a post as Editor 254 wp_set_current_user( $editor_user_id ); 255 $post_id = $this->factory->post->create( array( 'post_type' => $this->post_type ) ); 256 wp_update_post( array( 'post_content' => 'This content is much better', 'ID' => $post_id ) ); 257 wp_update_post( array( 'post_content' => 'This content is even better', 'ID' => $post_id ) ); 258 259 // Diff checks if you can read both left and right revisions 260 $revisions = wp_get_post_revisions( $post_id ); 261 $this->assertEquals( count( $revisions ), 2 ); 262 foreach ( $revisions as $revision ) { 263 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 264 } 265 266 // Author should be able to diff the revisions fine 267 wp_set_current_user( $author_user_id ); 268 foreach ( $revisions as $revision ) { 269 $this->assertTrue( current_user_can( 'read_post', $revision->ID ) ); 270 } 271 } 68 272 }
Note: See TracChangeset
for help on using the changeset viewer.