WordPress.org

Make WordPress Core

Ticket #17981: patch-core-17981-ut.diff

File patch-core-17981-ut.diff, 6.6 KB (added by koke, 2 years ago)

Unit Tests for wp.getComments and wp.editComment

  • wp-testcase/test-xmlrpc-api/test_wp_getComments.php

     
     1<?php 
     2 
     3class TestXMLRPCServer_wp_getComments extends WPXMLRPCServerTestCase { 
     4        function test_contributor_capabilities() { 
     5                wp_delete_comment( 1 ); 
     6                $author_id = get_user_by( 'login', 'author' )->ID; 
     7                $post = array( 'post_title' => 'Author', 'post_author' => $author_id, 'post_status' => 'publish' ); 
     8                $author_post_id = wp_insert_post( $post ); 
     9 
     10                $author_comment_id = wp_insert_comment( array( 
     11                        'comment_post_ID' => $author_post_id, 
     12                        'comment_author' => "Commenter 1", 
     13                        'comment_author_url' => "http://example.com/1/", 
     14                        'comment_approved' => 0, 
     15                )); 
     16                 
     17                $editor_id = get_user_by( 'login', 'editor' )->ID; 
     18                $post = array( 'post_title' => 'Editor', 'post_author' => $editor_id, 'post_status' => 'publish' ); 
     19                $editor_post_id = wp_insert_post( $post ); 
     20                 
     21                $editor_comment_id = wp_insert_comment(array( 
     22                        'comment_post_ID' => $editor_post_id, 
     23                        'comment_author' => "Commenter 2", 
     24                        'comment_author_url' => "http://example.com/2/", 
     25                        'comment_approved' => 0, 
     26                )); 
     27 
     28                $result = $this->myxmlrpcserver->wp_getComments( array( 1, 'contributor', 'contributor' ) ); 
     29                $this->assertNotInstanceOf( 'IXR_Error', $result ); 
     30                $this->assertInternalType( 'array', $result ); 
     31 
     32                $this->assertEquals( 2, count( $result ) ); 
     33                 
     34                $this->assertFalse( $result[0]['can_edit'] ); 
     35                $this->assertFalse( $result[1]['can_edit'] ); 
     36        } 
     37 
     38        function test_author_capabilities() { 
     39                wp_delete_comment( 1 ); 
     40                $author_id = get_user_by( 'login', 'author' )->ID; 
     41                $post = array( 'post_title' => 'Author', 'post_author' => $author_id, 'post_status' => 'publish' ); 
     42                $author_post_id = wp_insert_post( $post ); 
     43 
     44                wp_insert_comment( array( 
     45                        'comment_post_ID' => $author_post_id, 
     46                        'comment_author' => "Commenter 1", 
     47                        'comment_author_url' => "http://example.com/1/", 
     48                        'comment_approved' => 0, 
     49                )); 
     50                 
     51                $editor_id = get_user_by( 'login', 'editor' )->ID; 
     52                $post = array( 'post_title' => 'Editor', 'post_author' => $editor_id, 'post_status' => 'publish' ); 
     53                $editor_post_id = wp_insert_post( $post ); 
     54                 
     55                wp_insert_comment(array( 
     56                        'comment_post_ID' => $editor_post_id, 
     57                        'comment_author' => "Commenter 2", 
     58                        'comment_author_url' => "http://example.com/2/", 
     59                        'comment_approved' => 0, 
     60                )); 
     61 
     62                $result = $this->myxmlrpcserver->wp_getComments( array( 1, 'author', 'author', array( 'post_id' => $author_post_id ) ) ); 
     63                $this->assertNotInstanceOf( 'IXR_Error', $result ); 
     64                $this->assertInternalType( 'array', $result ); 
     65                $this->assertEquals( 1, count( $result ) ); 
     66                $this->assertTrue( $result[0]['can_edit'] ); 
     67 
     68                $result = $this->myxmlrpcserver->wp_getComments( array( 1, 'author', 'author', array( 'post_id' => $editor_post_id ) ) ); 
     69                $this->assertNotInstanceOf( 'IXR_Error', $result ); 
     70                $this->assertInternalType( 'array', $result ); 
     71                $this->assertEquals( 1, count( $result ) ); 
     72                $this->assertFalse( $result[0]['can_edit'] ); 
     73        } 
     74 
     75        function test_editor_capabilities() { 
     76                wp_delete_comment( 1 ); 
     77                $author_id = get_user_by( 'login', 'author' )->ID; 
     78                $post = array( 'post_title' => 'Editor', 'post_author' => $author_id, 'post_status' => 'publish' ); 
     79                $author_post_id = wp_insert_post( $post ); 
     80 
     81                wp_insert_comment( array( 
     82                        'comment_post_ID' => $author_post_id, 
     83                        'comment_author' => "Commenter 1", 
     84                        'comment_author_url' => "http://example.com/1/", 
     85                        'comment_approved' => 0, 
     86                )); 
     87                 
     88                $editor_id = get_user_by( 'login', 'editor' )->ID; 
     89                $post = array( 'post_title' => 'Editor', 'post_author' => $editor_id, 'post_status' => 'publish' ); 
     90                $editor_post_id = wp_insert_post( $post ); 
     91                 
     92                wp_insert_comment(array( 
     93                        'comment_post_ID' => $editor_post_id, 
     94                        'comment_author' => "Commenter 2", 
     95                        'comment_author_url' => "http://example.com/2/", 
     96                        'comment_approved' => 0, 
     97                )); 
     98 
     99                $result = $this->myxmlrpcserver->wp_getComments( array( 1, 'editor', 'editor' ) ); 
     100                $this->assertNotInstanceOf( 'IXR_Error', $result ); 
     101                $this->assertInternalType( 'array', $result ); 
     102 
     103                $this->assertEquals( 2, count( $result ) ); 
     104                 
     105                $this->assertTrue( $result[0]['can_edit'] ); 
     106                $this->assertTrue( $result[1]['can_edit'] ); 
     107        } 
     108} 
     109 
     110?> 
     111 No newline at end of file 
  • wp-testcase/test-xmlrpc-api/test_wp_editComment.php

     
     1<?php 
     2 
     3class TestXMLRPCServer_wp_editComment extends WPXMLRPCServerTestCase { 
     4        var $author_post_id; 
     5        var $editor_post_id; 
     6        var $author_comment_id; 
     7        var $editor_comment_id; 
     8         
     9        function setUp() { 
     10                parent::setUp(); 
     11 
     12                wp_delete_comment(1); 
     13 
     14                $author_id = get_user_by( 'login', 'author' )->ID; 
     15                $original_title = 'Post test by author'; 
     16                $post = array( 'post_title' => $original_title, 'post_author' => $author_id ); 
     17                $author_post_id = wp_insert_post( $post ); 
     18 
     19                $this->author_comment_id = wp_insert_comment(array( 
     20                        'comment_post_ID' => $author_post_id, 
     21                        'comment_author' => "Commenter 1", 
     22                        'comment_author_url' => "http://example.com/1/", 
     23                        'comment_approved' => 1, 
     24                )); 
     25                 
     26                $editor_id = get_user_by( 'login', 'editor' )->ID; 
     27                $original_title = 'Post test by editor'; 
     28                $post = array( 'post_title' => $original_title, 'post_author' => $editor_id ); 
     29                $editor_post_id = wp_insert_post( $post ); 
     30                 
     31                $this->editor_comment_id = wp_insert_comment(array( 
     32                        'comment_post_ID' => $editor_post_id, 
     33                        'comment_author' => "Commenter 2", 
     34                        'comment_author_url' => "http://example.com/2/", 
     35                        'comment_approved' => 0, 
     36                )); 
     37        } 
     38 
     39        function tearDown() { 
     40                parent::tearDown(); 
     41 
     42                wp_delete_post( $this->author_post_id ); 
     43                wp_delete_post( $this->editor_post_id ); 
     44        } 
     45 
     46        function test_author_can_edit_own_comment() { 
     47                $result = $this->myxmlrpcserver->wp_editComment( array( 1, 'author', 'author', $this->author_comment_id, array( 'status' => 'hold' ) ) ); 
     48                $this->assertNotInstanceOf( 'IXR_Error', $result ); 
     49                $this->assertTrue( $result ); 
     50        } 
     51 
     52        function test_author_cannot_edit_others_comment() { 
     53                $result = $this->myxmlrpcserver->wp_editComment( array( 1, 'author', 'author', $this->editor_comment_id, array( 'status' => 'hold' ) ) ); 
     54                $this->assertInstanceOf( 'IXR_Error', $result ); 
     55                $this->assertEquals( 403, $result->code ); 
     56                $this->assertEquals( __( 'You are not allowed to moderate this comment.' ), $result->message ); 
     57        } 
     58} 
     59 
     60?> 
     61 No newline at end of file