WordPress.org

Make WordPress Core

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

File patch-core-17981-ut.diff, 6.6 KB (added by koke, 6 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