<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[46657] trunk/tests/phpunit/tests/rest-api: REST API: Speed up pagination unit tests by creating less fixtures and reusing them where possible.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/46657">46657</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/46657","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>SergeyBiryukov</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2019-11-05 20:41:12 +0000 (Tue, 05 Nov 2019)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>REST API: Speed up pagination unit tests by creating less fixtures and reusing them where possible.

Includes minor documentation and code layout fixes for better readability.

See <a href="https://core.trac.wordpress.org/ticket/30017">#30017</a>, <a href="https://core.trac.wordpress.org/ticket/48145">#48145</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunktestsphpunittestsrestapirestattachmentscontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-attachments-controller.php</a></li>
<li><a href="#trunktestsphpunittestsrestapirestcategoriescontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-categories-controller.php</a></li>
<li><a href="#trunktestsphpunittestsrestapirestcommentscontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-comments-controller.php</a></li>
<li><a href="#trunktestsphpunittestsrestapirestpagescontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-pages-controller.php</a></li>
<li><a href="#trunktestsphpunittestsrestapirestpostscontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-posts-controller.php</a></li>
<li><a href="#trunktestsphpunittestsrestapiresttagscontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-tags-controller.php</a></li>
<li><a href="#trunktestsphpunittestsrestapirestuserscontrollerphp">trunk/tests/phpunit/tests/rest-api/rest-users-controller.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunktestsphpunittestsrestapirestattachmentscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-attachments-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-attachments-controller.php        2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-attachments-controller.php  2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1451,7 +1451,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_search_item_by_filename() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id  = $this->factory->attachment->create_object(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->attachment->create_object(
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->test_file,
</span><span class="cx" style="display: block; padding: 0 10px">                        0,
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span></span></pre></div>
<a id="trunktestsphpunittestsrestapirestcategoriescontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-categories-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-categories-controller.php 2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-categories-controller.php   2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15,6 +15,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $contributor;
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $subscriber;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        protected static $category_ids     = array();
+       protected static $total_categories = 30;
+       protected static $per_page         = 50;
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public static function wpSetUpBeforeClass( $factory ) {
</span><span class="cx" style="display: block; padding: 0 10px">                self::$administrator = $factory->user->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31,11 +35,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'role' => 'subscriber',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Set up categories for pagination tests.
+               for ( $i = 0; $i < self::$total_categories - 1; $i++ ) {
+                       $category_ids[] = $factory->category->create(
+                               array(
+                                       'name' => "Category {$i}",
+                               )
+                       );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpTearDownAfterClass() {
</span><span class="cx" style="display: block; padding: 0 10px">                self::delete_user( self::$administrator );
</span><span class="cx" style="display: block; padding: 0 10px">                self::delete_user( self::$subscriber );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Remove categories for pagination tests.
+               foreach ( self::$category_ids as $category_id ) {
+                       wp_delete_term( $category_id, 'category' );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function setUp() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -136,7 +154,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_taxonomy_terms_response( $response );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -143,6 +162,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_invalid_permission_for_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -153,8 +173,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id   = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $category1 = $this->factory->category->create( array( 'name' => 'Season 5' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $category2 = $this->factory->category->create( array( 'name' => 'The Be Sharps' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $total_categories = self::$total_categories + 2;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_object_terms( $post_id, array( $category1, $category2 ), 'category' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'hide_empty', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -166,7 +191,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'hide_empty', 'false' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 3, count( $data ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_categories, count( $data ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_parent_zero_arg() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -184,7 +209,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'parent' => $parent2,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', 0 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -214,7 +241,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'parent' => $parent2,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', '0' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -254,41 +283,49 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_include_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1 = $this->factory->category->create();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->factory->category->create();
-               $id3     = $this->factory->category->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id2 = $this->factory->category->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>asc
-               $request->set_param( 'include', array( $id3, $id1 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'asc'.
+               $request->set_param( 'include', array( $id2, $id1 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>include
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'include'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'include' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id3, $data[0]['id'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id2, $data[0]['id'] );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_exclude_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1      = $this->factory->category->create();
-               $id2      = $this->factory->category->create();
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->category->create();
+               $id2 = $this->factory->category->create();
+
+               $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertTrue( in_array( $id2, $ids, true ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_orderby_args() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Apple' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Banana' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 /*
</span><span class="cx" style="display: block; padding: 0 10px">                 * Tests:
</span><span class="cx" style="display: block; padding: 0 10px">                 * - orderby
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -304,6 +341,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Uncategorized', $data[0]['name'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'name' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'asc' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -319,7 +357,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Cantaloupe' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Apple' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Banana' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // defaults to orderby=name, order=asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Defaults to 'orderby' => 'name', 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -327,18 +366,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple', $data[0]['name'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Banana', $data[1]['name'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Cantaloupe', $data[2]['name'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 'Uncategorized', $data[3]['name'] );
-               // orderby=id, with default order=asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'id', with default 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'id' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 'Uncategorized', $data[0]['name'] );
-               $this->assertEquals( 'Cantaloupe', $data[1]['name'] );
-               $this->assertEquals( 'Apple', $data[2]['name'] );
-               $this->assertEquals( 'Banana', $data[3]['name'] );
-               // orderby=id, order=desc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( 'Category 0', $data[1]['name'] );
+               $this->assertEquals( 'Category 1', $data[2]['name'] );
+               $this->assertEquals( 'Category 2', $data[3]['name'] );
+
+               // 'orderby' => 'id', 'order' => 'desc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'id' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'desc' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -486,6 +525,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_search_args() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Apple' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Banana' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 /*
</span><span class="cx" style="display: block; padding: 0 10px">                 * Tests:
</span><span class="cx" style="display: block; padding: 0 10px">                 * - search
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -497,6 +537,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple', $data[0]['name'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'Garbage' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -508,6 +549,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_slug_arg() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Apple' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->category->create( array( 'name' => 'Banana' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'apple' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -525,6 +567,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'parent' => $category1,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'parent', $category1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -534,13 +577,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_terms_invalid_parent_arg() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $category1 = $this->factory->category->create( array( 'name' => 'Parent' ) );
-               $this->factory->category->create(
-                       array(
-                               'name'   => 'Child',
-                               'parent' => $category1,
-                       )
-               );
</del><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'parent', 'invalid-parent' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -574,19 +610,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_terms_pagination_headers() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Start of the index + Uncategorized default term
-               for ( $i = 0; $i < 49; $i++ ) {
-                       $this->factory->category->create(
-                               array(
-                                       'name' => "Category {$i}",
-                               )
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total_categories = self::$total_categories;
+               $total_pages      = (int) ceil( $total_categories / 10 );
+
+               // Start of the index + Uncategorized default term.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 50, $headers['X-WP-Total'] );
-               $this->assertEquals( 5, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_categories, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertCount( 10, $response->get_data() );
</span><span class="cx" style="display: block; padding: 0 10px">                $next_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -596,18 +628,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 3rd page
-               $this->factory->category->create(
-                       array(
-                               'name' => 'Category 51',
-                       )
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 3rd page.
+               $this->factory->category->create();
+               $total_categories++;
+               $total_pages++;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_categories, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertCount( 10, $response->get_data() );
</span><span class="cx" style="display: block; padding: 0 10px">                $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -623,33 +654,35 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/categories' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Last page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Last page.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 6 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', $total_pages );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_categories, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertCount( 1, $response->get_data() );
</span><span class="cx" style="display: block; padding: 0 10px">                $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages - 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/categories' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Out of bounds
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Out of bounds.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 8 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', 100 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_categories, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertCount( 0, $response->get_data() );
</span><span class="cx" style="display: block; padding: 0 10px">                $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 6,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/categories' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -658,28 +691,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_per_page_exceeds_number_of_items() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Start of the index + Uncategorized default term
-               for ( $i = 0; $i < 17; $i++ ) {
-                       $this->factory->category->create(
-                               array(
-                                       'name' => "Category {$i}",
-                               )
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Start of the index + Uncategorized default term.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'per_page', 100 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 18, $headers['X-WP-Total'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( self::$total_categories, $headers['X-WP-Total'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( 1, $headers['X-WP-TotalPages'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 18, $response->get_data() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( self::$total_categories, $response->get_data() );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'per_page', 100 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 18, $headers['X-WP-Total'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( self::$total_categories, $headers['X-WP-Total'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( 1, $headers['X-WP-TotalPages'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 0, $response->get_data() );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -737,6 +764,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_invalid_permission_for_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/categories/1' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -759,12 +787,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_incorrect_taxonomy() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'robin', 'post' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term1    = $this->factory->term->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $term1 = $this->factory->term->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'name'     => 'Cape',
</span><span class="cx" style="display: block; padding: 0 10px">                                'taxonomy' => 'robin',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/categories/' . $term1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_term_invalid', $response, 404 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -772,6 +801,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'description', 'This term is so awesome.' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -791,6 +821,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_term_already_exists() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $existing_id = $this->factory->category->create( array( 'name' => 'Existing' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -807,6 +838,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_invalid_taxonomy() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/invalid-taxonomy' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Invalid Taxonomy' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -815,6 +847,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_incorrect_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Incorrect permissions' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -823,6 +856,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_incorrect_permissions_contributor() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$contributor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Incorrect permissions' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -831,6 +865,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_missing_arguments() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_missing_callback_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -838,7 +873,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_with_parent() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $parent  = wp_insert_term( 'test-category', 'category' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $parent = wp_insert_term( 'test-category', 'category' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'parent', $parent['term_id'] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -850,6 +887,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_invalid_parent() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term = get_term_by( 'id', $this->factory->category->create(), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -861,7 +899,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_with_no_parent() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $parent  = 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $parent = 0;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'parent', $parent );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -873,13 +913,16 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $orig_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'name'        => 'Original Name',
</span><span class="cx" style="display: block; padding: 0 10px">                        'description' => 'Original Description',
</span><span class="cx" style="display: block; padding: 0 10px">                        'slug'        => 'original-slug',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term      = get_term_by( 'id', $this->factory->category->create( $orig_args ), 'category' );
-               $request   = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->category->create( $orig_args ), 'category' );
+
+               $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'name', 'New Name' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'description', 'New Description' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'new-slug' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -904,6 +947,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_invalid_taxonomy() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/invalid-taxonomy/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Invalid Taxonomy' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -912,6 +956,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_invalid_term() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Invalid Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -920,7 +965,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_incorrect_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = get_term_by( 'id', $this->factory->category->create(), 'category' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->category->create(), 'category' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Incorrect permissions' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -929,6 +976,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_parent() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $parent = get_term_by( 'id', $this->factory->category->create(), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px">                $term   = get_term_by( 'id', $this->factory->category->create(), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -970,6 +1018,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_invalid_parent() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term = get_term_by( 'id', $this->factory->category->create(), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/categories/' . $term->term_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -980,7 +1029,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = get_term_by( 'id', $this->factory->category->create( array( 'name' => 'Deleted Category' ) ), 'category' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->category->create( array( 'name' => 'Deleted Category' ) ), 'category' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -992,6 +1043,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_no_trash() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term = get_term_by( 'id', $this->factory->category->create( array( 'name' => 'Deleted Category' ) ), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . $term->term_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1005,6 +1057,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_invalid_taxonomy() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'DELETE', '/wp/v2/invalid-taxonomy/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_no_route', $response, 404 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1012,6 +1065,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_invalid_term() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_term_invalid', $response, 404 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1019,6 +1073,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_incorrect_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term     = get_term_by( 'id', $this->factory->category->create(), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'DELETE', '/wp/v2/categories/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span></span></pre></div>
<a id="trunktestsphpunittestsrestapirestcommentscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-comments-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-comments-controller.php   2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-comments-controller.php     2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25,6 +25,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $approved_id;
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $hold_id;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        protected static $comment_ids    = array();
+       protected static $total_comments = 30;
+       protected static $per_page       = 50;
+
</ins><span class="cx" style="display: block; padding: 0 10px">         protected $endpoint;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpSetUpBeforeClass( $factory ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -110,6 +114,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'          => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Set up comments for pagination tests.
+               for ( $i = 0; $i < self::$total_comments - 1; $i++ ) {
+                       $comment_ids[] = $factory->comment->create(
+                               array(
+                                       'comment_content' => "Comment {$i}",
+                                       'comment_post_ID' => self::$post_id,
+                               )
+                       );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpTearDownAfterClass() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -129,6 +143,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                wp_delete_post( self::$trash_id, true );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_delete_post( self::$approved_id, true );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_delete_post( self::$hold_id, true );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Remove comments for pagination tests.
+               foreach ( self::$comment_ids as $comment_id ) {
+                       wp_delete_comment( $comment_id, true );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function setUp() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -197,16 +216,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->factory->comment->create_post_comments( self::$post_id, 6 );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $comments = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // We created 6 comments in this method, plus self::$approved_id.
-               $this->assertCount( 7, $comments );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( self::$total_comments, $comments );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -215,10 +232,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_password() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -237,10 +255,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_password_without_post() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -258,10 +278,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_password_with_multiple_post() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -275,10 +297,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_password_items_without_edit_post_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -293,10 +316,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_password_items_with_edit_post_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -311,10 +335,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_without_private_post_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args            = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$private_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $private_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -329,10 +354,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_private_post_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args            = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$private_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $private_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -388,6 +414,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_no_permission_for_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -395,8 +422,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_no_post() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_set_current_user( self::$admin_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->comment->create_post_comments( 0, 2 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_set_current_user( self::$admin_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', 0 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -407,6 +436,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_no_permission_for_no_post() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', 0 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -415,6 +445,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_edit_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -441,32 +472,38 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_include_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1  = $this->factory->comment->create( $args );
-               $this->factory->comment->create( $args );
-               $id3     = $this->factory->comment->create( $args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $id1 = $this->factory->comment->create( $args );
+               $id2 = $this->factory->comment->create( $args );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Order=>asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'order', 'asc' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'include', array( $id3, $id1 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'include', array( $id2, $id1 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>include
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'include'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'include' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id3, $data[0]['id'] );
-               // Orderby=>invalid should fail.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id2, $data[0]['id'] );
+
+               // Invalid 'orderby' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // fails on invalid id.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'include' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', array( 'include' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'include', array( 'invalid' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -475,24 +512,30 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_exclude_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args     = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1      = $this->factory->comment->create( $args );
-               $id2      = $this->factory->comment->create( $args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $id1 = $this->factory->comment->create( $args );
+               $id2 = $this->factory->comment->create( $args );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertTrue( in_array( $id2, $ids, true ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // fails on invalid id.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Invalid 'exclude' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', array( 'invalid' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -500,26 +543,24 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_offset_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args = array(
-                       'comment_approved' => 1,
-                       'comment_post_ID'  => self::$post_id,
-               );
-               $this->factory->comment->create( $args );
-               $this->factory->comment->create( $args );
-               $this->factory->comment->create( $args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $response->get_data() );
-               // 'offset' works with 'per_page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( self::$total_comments - 1, $response->get_data() );
+
+               // 'offset' works with 'per_page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'per_page', 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' takes priority over 'page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'offset' takes priority over 'page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' with invalid value errors.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'offset' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 'moreplease' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -527,24 +568,28 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_order_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->factory->comment->create( $args );
-               $this->factory->comment->create( $args );
-               $id3     = $this->factory->comment->create( $args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $id = $this->factory->comment->create( $args );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // order defaults to 'desc'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Order defaults to 'desc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id3, $data[0]['id'] );
-               // order=>asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id, $data[0]['id'] );
+
+               // 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'order', 'asc' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( self::$approved_id, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // order=>asc,id should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'order' => 'asc,id' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'order', 'asc,id' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -552,7 +597,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_private_post_no_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post_id = $this->factory->post->create( array( 'post_status' => 'private' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -560,13 +607,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_author_arg() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Authorized
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Authorized.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'user_id'          => self::$author_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px">                $args['user_id'] = self::$subscriber_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -573,7 +622,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                unset( $args['user_id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'author' limits result to 1 of 3
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Limit to comment author.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author', self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -580,17 +629,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $comments = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 1, $comments );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Multiple authors are supported
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Multiple authors are supported.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'author', array( self::$author_id, self::$subscriber_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $comments = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $comments );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid author param errors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'author' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'author', 'skippy' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Unavailable to unauthenticated; defaults to error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Unavailable to unauthenticated; defaults to error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author', array( self::$author_id, self::$subscriber_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -598,13 +650,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_author_exclude_arg() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Authorized
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Authorized.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'user_id'          => self::$author_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px">                $args['user_id'] = self::$subscriber_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -611,31 +665,39 @@
</span><span class="cx" style="display: block; padding: 0 10px">                unset( $args['user_id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total_comments = self::$total_comments + 3;
+
+               $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $comments = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 4, $comments );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments, $comments );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'author_exclude' limits result to 3 of 4
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Exclude comment author.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'author_exclude', self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $comments = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $comments );
-               // 'author_exclude' for both comment authors (2 of 4)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments - 1, $comments );
+
+               // Exclude both comment authors.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'author_exclude', array( self::$author_id, self::$subscriber_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $comments = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 2, $comments );
-               // 'author_exclude' for both invalid author
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments - 2, $comments );
+
+               // 'author_exclude' for invalid author.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author_exclude', 'skippy' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Unavailable to unauthenticated; defaults to error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Unavailable to unauthenticated; defaults to error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author_exclude', array( self::$author_id, self::$subscriber_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -653,19 +715,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px">                $args['comment_parent'] = $parent_id2;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // All comments in the database
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $total_comments = self::$total_comments + 4;
+
+               // All comments in the database.
+               $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 5, $response->get_data() );
-               // Limit to the parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments, $response->get_data() );
+
+               // Limit to the parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', $parent_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 1, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Limit to two parents
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Limit to two parents.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', array( $parent_id, $parent_id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid parent should error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'parent' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -682,19 +751,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px">                $args['comment_parent'] = $parent_id2;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->comment->create( $args );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // All comments in the database
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $total_comments = self::$total_comments + 4;
+
+               // All comments in the database.
+               $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 5, $response->get_data() );
-               // Exclude this particular parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments, $response->get_data() );
+
+               // Exclude this particular parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent_exclude', $parent_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 4, $response->get_data() );
-               // Exclude both comment parents
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments - 1, $response->get_data() );
+
+               // Exclude both comment parents.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent_exclude', array( $parent_id, $parent_id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $response->get_data() );
-               // Invalid parent id should error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments - 2, $response->get_data() );
+
+               // Invalid 'parent_exclude' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent_exclude', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -702,45 +778,43 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_search_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args                    = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_content'  => 'foo',
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_author'   => 'Homer J Simpson',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1                     = $this->factory->comment->create( $args );
-               $args['comment_content'] = 'bar';
-               $this->factory->comment->create( $args );
-               $args['comment_content'] = 'burrito';
-               $this->factory->comment->create( $args );
-               // 3 comments, plus 1 created in construct
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $id = $this->factory->comment->create( $args );
+
+               $total_comments = self::$total_comments + 1;
+
+               $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 4, $response->get_data() );
-               // One matching comments
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_comments, $response->get_data() );
+
+               // One matching comment.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'search', 'foo' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 1, $data );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id1, $data[0]['id'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id, $data[0]['id'] );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comments_pagination_headers() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_comments = self::$total_comments;
+               $total_pages    = (int) ceil( $total_comments / 10 );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Start of the index
-               for ( $i = 0; $i < 49; $i++ ) {
-                       $this->factory->comment->create(
-                               array(
-                                       'comment_content' => "Comment {$i}",
-                                       'comment_post_ID' => self::$post_id,
-                               )
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Start of the index.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 50, $headers['X-WP-Total'] );
-               $this->assertEquals( 5, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_comments, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $next_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -749,19 +823,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 3rd page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 3rd page.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->comment->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'comment_content' => 'Comment 51',
</del><span class="cx" style="display: block; padding: 0 10px">                                 'comment_post_ID' => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_comments++;
+               $total_pages++;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_comments, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -776,31 +852,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( '/wp/v2/comments' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Last page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Last page.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 6 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', $total_pages );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_comments, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages - 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( '/wp/v2/comments' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Out of bounds
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Out of bounds.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/comments' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 8 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', 100 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_comments, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 6,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( '/wp/v2/comments' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -857,6 +935,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_prepare_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_query_params(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -873,6 +952,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_prepare_item_limit_fields() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $endpoint = new WP_REST_Comments_Controller;
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -915,6 +995,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_invalid_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%s', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -923,6 +1004,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_invalid_post_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $comment_id = $this->factory->comment->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_approved' => 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -929,8 +1011,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_post_ID'  => REST_TESTS_IMPOSSIBLY_HIGH_NUMBER,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request    = new WP_REST_Request( 'GET', '/wp/v2/comments/' . $comment_id );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request  = new WP_REST_Request( 'GET', '/wp/v2/comments/' . $comment_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_post_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -937,6 +1019,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_invalid_post_id_as_admin() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $comment_id = $this->factory->comment->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_approved' => 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -943,8 +1026,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_post_ID'  => REST_TESTS_IMPOSSIBLY_HIGH_NUMBER,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request    = new WP_REST_Request( 'GET', '/wp/v2/comments/' . $comment_id );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request  = new WP_REST_Request( 'GET', '/wp/v2/comments/' . $comment_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_post_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -952,8 +1035,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_not_approved() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', self::$hold_id ) );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', self::$hold_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_cannot_read', $response, 401 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -961,8 +1043,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_not_approved_same_user() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', self::$hold_id ) );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%d', self::$hold_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1008,13 +1089,16 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_with_password_without_edit_post_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request          = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%s', $password_comment ) );
-               $response         = rest_get_server()->dispatch( $request );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%s', $password_comment ) );
+               $response = rest_get_server()->dispatch( $request );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertErrorResponse( 'rest_cannot_read', $response, 403 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1024,10 +1108,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_comment_with_password_with_valid_password() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args             = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'  => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $password_comment = $this->factory->comment->create( $args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/comments/%s', $password_comment ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1113,6 +1198,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_date( $params, $results ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'timezone_string', $params['timezone_string'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1233,6 +1319,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_missing_required_author_email() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'require_name_email', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1251,6 +1338,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_empty_required_author_email() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'require_name_email', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1342,7 +1430,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Comic Book Guy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'cbg@androidsdungeon.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1351,6 +1440,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Worst Comment Ever!',
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'         => '2014-11-07T10:14:25',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1364,6 +1454,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_without_type() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1401,6 +1492,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_with_invalid_type() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1424,6 +1516,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_invalid_email() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1568,6 +1661,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_with_status_IP_and_user_agent() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1662,7 +1756,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_author_ip_no_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author_name'  => 'Comic Book Guy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'cbg@androidsdungeon.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_url'   => 'http://androidsdungeon.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1670,6 +1765,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Worst Comment Ever!',
</span><span class="cx" style="display: block; padding: 0 10px">                        'status'       => 'approved',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1679,8 +1775,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_author_ip_defaults_to_remote_addr() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $_SERVER['REMOTE_ADDR'] = '127.0.0.2';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params                 = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Comic Book Guy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'cbg@androidsdungeon.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1687,7 +1785,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_url'   => 'http://androidsdungeon.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Worst Comment Ever!',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request                = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response    = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1699,7 +1798,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_no_post_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author_name'  => 'Comic Book Guy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'cbg@androidsdungeon.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_url'   => 'http://androidsdungeon.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1706,6 +1805,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Worst Comment Ever!',
</span><span class="cx" style="display: block; padding: 0 10px">                        'status'       => 'approved',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1718,7 +1818,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_no_post_id_no_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author_name'  => 'Homer Jay Simpson',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'chunkylover53@aol.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_url'   => 'http://compuglobalhypermeganet.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1725,6 +1825,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Here\’s to alcohol: the cause of, and solution to, all of life\’s problems.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author'       => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1756,7 +1857,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_draft_post() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$draft_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Ishmael',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'herman-melville@earthlink.net',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1764,12 +1865,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Call me Ishmael.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author'       => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertErrorResponse( 'rest_comment_draft_post', $response, 403 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1776,7 +1877,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_trash_post() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$trash_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Ishmael',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'herman-melville@earthlink.net',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1784,6 +1885,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'Call me Ishmael.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author'       => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1796,7 +1898,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_private_post_invalid_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$private_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Homer Jay Simpson',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'chunkylover53@aol.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1804,12 +1906,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'I\’d be a vegetarian if bacon grew on trees.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author'       => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertErrorResponse( 'rest_cannot_read_post', $response, 403 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1816,7 +1918,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_password_post_invalid_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Homer Jay Simpson',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'chunkylover53@aol.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1824,6 +1926,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'I\’d be a vegetarian if bacon grew on trees.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author'       => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1834,6 +1937,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_duplicate() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->comment->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_post_ID'      => self::$post_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1864,6 +1968,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_status' => 'closed',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1880,8 +1985,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_require_login() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'comment_registration', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'rest_allow_anonymous_comments', '__return_true' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', self::$post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1997,7 +2104,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_author_name_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => rand_long_str( 246 ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'murphy@gingivitis.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2005,6 +2112,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'         => '1995-04-30T10:22:00',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2020,7 +2128,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_author_email_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Bleeding Gums Murphy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'murphy@' . rand_long_str( 190 ) . '.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2028,6 +2136,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'         => '1995-04-30T10:22:00',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2043,7 +2152,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_author_url_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Bleeding Gums Murphy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'murphy@gingivitis.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2051,6 +2160,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'         => '1995-04-30T10:22:00',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2066,7 +2176,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_content_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Bleeding Gums Murphy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'murphy@gingivitis.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2074,6 +2184,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => rand_long_str( 66525 ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'         => '1995-04-30T10:22:00',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2086,7 +2197,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_without_password() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Bleeding Gums Murphy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'murphy@gingivitis.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2093,6 +2204,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_url'   => 'http://jazz.gingivitis.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2105,7 +2217,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_comment_with_password() {
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'rest_allow_anonymous_comments', '__return_true' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'post'         => self::$password_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Bleeding Gums Murphy',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_email' => 'murphy@gingivitis.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2113,6 +2225,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'password'     => 'toomanysecrets',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2126,7 +2239,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author'       => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'  => 'Disco Stu',
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_url'   => 'http://stusdisco.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2136,6 +2249,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'         => '2014-11-07T10:14:25',
</span><span class="cx" style="display: block; padding: 0 10px">                        'post'         => $post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2162,6 +2276,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_date( $params, $results ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'timezone_string', $params['timezone_string'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $comment_id = $this->factory->comment->create();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2213,6 +2328,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $comment = get_comment( self::$approved_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', $comment->comment_post_ID );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2235,9 +2351,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'status' => 'approve',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', $comment_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2262,9 +2379,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'status' => 'approve',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', $comment_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2282,10 +2400,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_date_gmt() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'date_gmt' => '2015-05-07T10:14:25',
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'  => 'I\'ll be deep in the cold, cold ground before I recognize Missouri.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2301,6 +2420,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_author_email_only() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'require_name_email', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2319,6 +2439,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_empty_author_name() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'require_name_email', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2338,6 +2459,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_author_name_only() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'require_name_email', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2356,6 +2478,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_empty_author_email() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'require_name_email', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2396,9 +2519,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_invalid_type() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'type' => 'trackback',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2410,11 +2534,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_with_raw_property() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'content' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'raw' => 'What the heck kind of name is Persephone?',
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2463,9 +2588,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_invalid_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'content' => 'Oh, they have the internet on computers now!',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', '/wp/v2/comments/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2487,9 +2613,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_invalid_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'rest_allow_anonymous_comments', '__return_true' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'content' => 'Disco Stu likes disco music.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$hold_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2504,11 +2631,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_when_can_moderate_comments() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$moderator_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
-               $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'content' => 'Updated comment.',
</span><span class="cx" style="display: block; padding: 0 10px">                        'date'    => '2019-10-07T23:14:25',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2534,9 +2662,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'content' => 'Disco Stu likes disco music.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', $private_comment_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2547,6 +2676,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_with_children_link() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $comment_id_1 = $this->factory->comment->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_approved' => 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2589,10 +2719,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_author_name_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author_name' => rand_long_str( 246 ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'     => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2608,10 +2739,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_author_email_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author_email' => 'murphy@' . rand_long_str( 190 ) . '.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2627,10 +2759,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_author_url_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'author_url' => 'http://jazz.' . rand_long_str( 185 ) . '.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        'content'    => 'This isn\'t a saxophone. It\'s an umbrella.',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2646,9 +2779,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_comment_content_too_long() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $params  = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $params = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'content' => rand_long_str( 66525 ),
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2711,6 +2845,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_comment_roundtrip_as_editor() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( ! is_multisite(), current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_comment_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2731,6 +2866,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_comment_roundtrip_as_editor_unfiltered_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertFalse( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->verify_comment_roundtrip(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2770,6 +2906,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_comment_roundtrip_as_superadmin() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_comment_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2790,6 +2927,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_comment_roundtrip_as_superadmin_unfiltered_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_comment_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2831,7 +2969,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_skip_trash() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $comment_id       = $this->factory->comment->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $comment_id = $this->factory->comment->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_approved' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_post_ID'  => self::$post_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2838,6 +2976,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'          => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request          = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', $comment_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request['force'] = true;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2858,8 +2997,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'          => self::$subscriber_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request    = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', $comment_id ) );
-               $response   = rest_get_server()->dispatch( $request );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request  = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', $comment_id ) );
+               $response = rest_get_server()->dispatch( $request );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2869,8 +3009,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_comment_invalid_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', REST_TESTS_IMPOSSIBLY_HIGH_NUMBER ) );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', REST_TESTS_IMPOSSIBLY_HIGH_NUMBER ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_comment_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2878,8 +3017,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_comment_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_cannot_delete', $response, 403 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2886,6 +3024,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_child_comment_link() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$admin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $comment_id_1 = $this->factory->comment->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'comment_approved' => 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2947,6 +3086,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_schema_show_avatar() {
</span><span class="cx" style="display: block; padding: 0 10px">                update_option( 'show_avatars', false );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request    = new WP_REST_Request( 'OPTIONS', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response   = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data       = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2974,8 +3114,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/comments' );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'OPTIONS', '/wp/v2/comments' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2982,8 +3121,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertArrayHasKey( 'my_custom_int', $data['schema']['properties'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $schema, $data['schema']['properties']['my_custom_int'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', '/wp/v2/comments/' . self::$approved_id );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', '/wp/v2/comments/' . self::$approved_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertArrayHasKey( 'my_custom_int', $response->data );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunktestsphpunittestsrestapirestpagescontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-pages-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-pages-controller.php      2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-pages-controller.php        2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -125,18 +125,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_parent' => $id1,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // No parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // No parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/pages' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Filter to parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Filter to parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', $id1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id2, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid parent should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'parent' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', 'some-slug' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -169,12 +172,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_parent' => $id3,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // No parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // No parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/pages' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 4, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Filter to parents
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Filter to parents.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent', array( $id1, $id3 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -196,18 +201,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_parent' => $id1,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // No parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // No parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/pages' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Filter to parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Filter to parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent_exclude', $id1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid parent_exclude should error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'parent_exclude' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'parent_exclude', 'some-slug' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -241,17 +249,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'menu_order'  => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // No parent
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // No parent.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/pages' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEqualSets( array( $id1, $id2, $id3, $id4 ), wp_list_pluck( $data, 'id' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Filter to menu_order
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Filter to 'menu_order'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'menu_order', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEqualSets( array( $id4 ), wp_list_pluck( $data, 'id' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Order by menu order
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Order by 'menu order'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/pages' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'asc' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'menu_order' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -261,7 +272,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id4, $data[1]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id2, $data[2]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id3, $data[3]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid menu_order should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'menu_order' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/pages' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'menu_order', 'top-first' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span></span></pre></div>
<a id="trunktestsphpunittestsrestapirestpostscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-posts-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-posts-controller.php      2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-posts-controller.php        2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19,6 +19,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $private_reader_id;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $supported_formats;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        protected static $post_ids    = array();
+       protected static $total_posts = 30;
+       protected static $per_page    = 50;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected $forbidden_cat;
</span><span class="cx" style="display: block; padding: 0 10px">        protected $posts_clauses;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -61,6 +64,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Only support 'post' and 'gallery'
</span><span class="cx" style="display: block; padding: 0 10px">                self::$supported_formats = get_theme_support( 'post-formats' );
</span><span class="cx" style="display: block; padding: 0 10px">                add_theme_support( 'post-formats', array( 'post', 'gallery' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Set up posts for pagination tests.
+               for ( $i = 0; $i < self::$total_posts - 1; $i++ ) {
+                       self::$post_ids[] = $factory->post->create(
+                               array(
+                                       'post_title' => "Post {$i}",
+                               )
+                       );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpTearDownAfterClass() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,6 +83,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        remove_theme_support( 'post-formats' );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Remove posts for pagination tests.
+               foreach ( self::$post_ids as $post_id ) {
+                       wp_delete_post( $post_id, true );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_delete_post( self::$post_id, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                self::delete_user( self::$superadmin_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -203,6 +220,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $headers['Allow'], 'GET' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'OPTIONS', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = apply_filters( 'rest_post_dispatch', $response, rest_get_server(), $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -240,12 +258,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_author_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->post->create( array( 'post_author' => self::$editor_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->post->create( array( 'post_author' => self::$author_id ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // All 3 posts
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $total_posts = self::$total_posts + 2;
+
+               // All posts in the database.
+               $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 3, count( $response->get_data() ) );
-               // 2 of 3 posts
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, count( $response->get_data() ) );
+
+               // Limit to editor and author.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author', array( self::$editor_id, self::$author_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -253,7 +276,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEqualSets( array( self::$editor_id, self::$author_id ), wp_list_pluck( $data, 'author' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 1 of 3 posts
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Limit to editor.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author', self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -266,30 +290,39 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_author_exclude_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->post->create( array( 'post_author' => self::$editor_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->post->create( array( 'post_author' => self::$author_id ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // All 3 posts
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $total_posts = self::$total_posts + 2;
+
+               // All posts in the database.
+               $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 3, count( $response->get_data() ) );
-               // 1 of 3 posts
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, count( $response->get_data() ) );
+
+               // Exclude editor and author.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'author_exclude', array( self::$editor_id, self::$author_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 1, count( $data ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts - 2, count( $data ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertNotEquals( self::$editor_id, $data[0]['author'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertNotEquals( self::$author_id, $data[0]['author'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 2 of 3 posts
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Exclude editor.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'author_exclude', self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 2, count( $data ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts - 1, count( $data ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertNotEquals( self::$editor_id, $data[0]['author'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertNotEquals( self::$editor_id, $data[1]['author'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // invalid author_exclude errors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'author_exclude' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'author_exclude', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -298,24 +331,27 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_include_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id3     = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>desc
-               $request->set_param( 'include', array( $id1, $id3 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Order defaults to 'desc'.
+               $request->set_param( 'include', array( $id1, $id2 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id3, $data[0]['id'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id2, $data[0]['id'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertPostsOrderedBy( '{posts}.post_date DESC' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>include
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'include'
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'include' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertPostsOrderedBy( "FIELD({posts}.ID,$id1,$id3)" );
-               // Invalid include should error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertPostsOrderedBy( "FIELD({posts}.ID,$id1,$id2)" );
+
+               // Invalid 'include' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'include', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -420,25 +456,29 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_exclude_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id2      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
+               $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertTrue( in_array( $id2, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'exclude', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'exclude', "$id2" );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'exclude', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -446,9 +486,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_search_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                for ( $i = 0;  $i < 5;  $i++ ) {
-                       $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               }
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->post->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_title'  => 'Search Result',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -455,9 +492,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total_posts = self::$total_posts + 1;
+
+               $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 7, count( $response->get_data() ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, count( $response->get_data() ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'Search Result' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -479,6 +520,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'apple' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -507,6 +549,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', array( 'banana', 'peach' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -540,6 +583,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'apple,banana' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -556,17 +600,23 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_status_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->post->create( array( 'post_status' => 'draft' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'status', 'publish' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 1, count( $response->get_data() ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( self::$total_posts, count( $response->get_data() ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'draft' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'draft' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -635,6 +685,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $private_post_id = $this->factory->post->create( array( 'post_status' => 'private' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$private_reader_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', array( 'private', 'future' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -644,6 +695,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_invalid_status_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -656,6 +708,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'draft',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -694,25 +747,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'Apple' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // order defaults to 'desc'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Order defaults to 'desc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'title' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple Sauce', $data[0]['title']['rendered'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertPostsOrderedBy( '{posts}.post_title DESC' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // order=>asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'order', 'asc' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple Cobbler', $data[0]['title']['rendered'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertPostsOrderedBy( '{posts}.post_title ASC' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // order=>asc,id should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'order' => 'asc,id' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'order', 'asc,id' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // orderby=>content should fail (invalid param test)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'content' should error (invalid param test).
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'order', 'asc' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'content' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -721,6 +779,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_orderby_include_without_include_param() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'include' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -817,7 +876,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_orderby_relevance() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_title'   => 'Title is more relevant',
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content' => 'Content is',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -824,7 +883,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status'  => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id2     = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id2 = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_title'   => 'Title is',
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content' => 'Content is less relevant',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -831,6 +890,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status'  => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'relevance' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'relevant' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -844,7 +904,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_orderby_relevance_two_terms() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_title'   => 'Title is more relevant',
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content' => 'Content is',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -851,7 +911,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status'  => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id2     = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id2 = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_title'   => 'Title is',
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content' => 'Content is less relevant',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -858,6 +918,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status'  => 'publish',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'relevance' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'relevant content' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -878,23 +939,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_offset_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = self::$post_id;
-               $id2     = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id3     = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id4     = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $response->get_data() );
-               // 'offset' works with 'per_page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( self::$total_posts - 1, $response->get_data() );
+
+               // 'offset' works with 'per_page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'per_page', 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' takes priority over 'page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'offset' takes priority over 'page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'page', 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid 'offset' should error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'offset' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 'moreplease' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -902,12 +963,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_tags_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1 = self::$post_id;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id3 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id4 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 $tag = wp_insert_term( 'My Tag', 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_object_terms( $id1, array( $tag['term_id'] ), 'post_tag' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'tags', array( $tag['term_id'] ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -924,13 +983,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $id4 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $tag = wp_insert_term( 'My Tag', 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_posts = self::$total_posts + 3;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_object_terms( $id1, array( $tag['term_id'] ), 'post_tag' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'tags_exclude', array( $tag['term_id'] ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $data );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_posts - 1, $data );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( $id4, $data[0]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id3, $data[1]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id2, $data[2]['id'] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -939,8 +1002,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_tags_and_categories_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1      = self::$post_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $id2      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id3      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id4      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 $tag      = wp_insert_term( 'My Tag', 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px">                $category = wp_insert_term( 'My Category', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -966,8 +1027,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_tags_or_categories_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1      = self::$post_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $id2      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id3      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id4      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 $tag      = wp_insert_term( 'My Tag', 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px">                $category = wp_insert_term( 'My Category', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -990,8 +1049,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_tags_and_categories_exclude_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1      = self::$post_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $id2      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id3      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
-               $id4      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 $tag      = wp_insert_term( 'My Tag', 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px">                $category = wp_insert_term( 'My Category', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1017,7 +1074,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 44326
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_tags_or_categories_exclude_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1      = self::$post_id;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1      = end( self::$post_ids );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $id2      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $id3      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $id4      = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1024,6 +1081,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $tag      = wp_insert_term( 'My Tag', 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px">                $category = wp_insert_term( 'My Category', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_posts = self::$total_posts + 3;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_object_terms( $id1, array( $tag['term_id'] ), 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_object_terms( $id2, array( $tag['term_id'] ), 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_object_terms( $id2, array( $category['term_id'] ), 'category' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1030,6 +1089,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_object_terms( $id3, array( $category['term_id'] ), 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'tags', array( $tag['term_id'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'categories_exclude', array( $category['term_id'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'tax_relation', 'OR' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1037,7 +1097,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $data );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_posts - 1, $data );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( $id4, $data[0]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id2, $data[1]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[2]['id'] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1081,7 +1141,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_sticky_with_include() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id1 = self::$post_id;
</span><span class="cx" style="display: block; padding: 0 10px">                $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id3 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                update_option( 'sticky_posts', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1116,8 +1175,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_sticky_no_sticky_posts() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1 = self::$post_id;
-
</del><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'sticky_posts', array() );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1153,16 +1210,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_not_sticky() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1 = self::$post_id;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = end( self::$post_ids );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_posts = self::$total_posts + 1;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'sticky_posts', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'sticky', false );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 1, $response->get_data() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_posts - 1, $response->get_data() );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $posts = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $post  = $posts[0];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1172,22 +1232,27 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_not_sticky_with_exclude() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1 = self::$post_id;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = end( self::$post_ids );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $id3 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_posts = self::$total_posts + 2;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'sticky_posts', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'sticky', false );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'exclude', array( $id3 ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 1, $response->get_data() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_posts - 2, $response->get_data() );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $posts = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post  = $posts[0];
-               $this->assertEquals( $id1, $post['id'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids   = wp_list_pluck( $posts, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
+               $this->assertFalse( in_array( $id3, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertPostsWhere( " AND {posts}.ID NOT IN ($id3,$id2) AND {posts}.post_type = 'post' AND (({posts}.post_status = 'publish'))" );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1197,37 +1262,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $id2 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $id3 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_posts = self::$total_posts + 2;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'sticky_posts', array() );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'sticky', false );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'exclude', array( $id3 ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 2, $response->get_data() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( $total_posts - 1, $response->get_data() );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $posts = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $ids   = wp_list_pluck( $posts, 'id' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                sort( $ids );
-               $this->assertEquals( array( $id1, $id2 ), $ids );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertTrue( in_array( $id2, $ids, true ) );
+               $this->assertFalse( in_array( $id3, $ids, true ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertPostsWhere( " AND {posts}.ID NOT IN ($id3) AND {posts}.post_type = 'post' AND (({posts}.post_status = 'publish'))" );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_pagination_headers() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Start of the index
-               for ( $i = 0; $i < 49; $i++ ) {
-                       $this->factory->post->create(
-                               array(
-                                       'post_title' => "Post {$i}",
-                               )
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total_posts = self::$total_posts;
+               $total_pages = (int) ceil( $total_posts / 10 );
+
+               // Start of the index.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 50, $headers['X-WP-Total'] );
-               $this->assertEquals( 5, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $next_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1236,18 +1301,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 3rd page
-               $this->factory->post->create(
-                       array(
-                               'post_title' => 'Post 51',
-                       )
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 3rd page.
+               $this->factory->post->create();
+               $total_posts++;
+               $total_pages++;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1262,16 +1326,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( '/wp/v2/posts' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Last page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Last page.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 6 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', $total_pages );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages - 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( '/wp/v2/posts' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1278,15 +1343,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Out of bounds
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Out of bounds.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 8 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', 100 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_post_invalid_page_number', $response, 400 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // With query params.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total_pages = (int) ceil( $total_posts / 5 );
+               $request     = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_query_params(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'per_page' => 5,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1295,8 +1361,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 11, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_posts, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'per_page' => 5,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1320,6 +1386,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Drafts status query var inaccessible to unauthorized users.
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'draft' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1327,6 +1394,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Users with 'read_private_posts' cap shouldn't also be able to view drafts.
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$private_reader_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'draft' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1334,9 +1402,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // But drafts are accessible to authorized users.
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( $draft_id, $data[0]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1347,6 +1415,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $private_post_id = $this->factory->post->create( array( 'post_status' => 'private' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'private' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1353,6 +1422,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$private_reader_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'status', 'private' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1520,6 +1590,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'draft',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $draft_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1552,6 +1623,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_post_list_context_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_query_params(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1565,6 +1637,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_post_context_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_query_params(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1604,7 +1677,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post    = get_post( $post_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post = get_post( $post_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'password', '$inthebananastand' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1625,7 +1699,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post    = get_post( $post_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post = get_post( $post_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'password', 'wrongpassword' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1634,7 +1709,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_post_with_password_without_permission() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_id  = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_id = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_password' => '$inthebananastand',
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content'  => 'Some secret content.',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1641,6 +1716,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_excerpt'  => 'Some secret excerpt.',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1703,6 +1779,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content' => '<hr />',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1713,7 +1790,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_read_permission_custom_post_status_not_authenticated() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_post_status( 'testpubstatus', array( 'public' => true ) );
</span><span class="cx" style="display: block; padding: 0 10px">                register_post_status( 'testprivtatus', array( 'public' => false ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Public status
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Public status.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_update_post(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'ID'          => self::$post_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1720,10 +1798,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'testpubstatus',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Private status
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Private status.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_update_post(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'ID'          => self::$post_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1730,6 +1810,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'testprivtatus',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 401, $response->get_status() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1747,6 +1828,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_prepare_item_limit_fields() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $endpoint = new WP_REST_Posts_Controller( 'post' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1774,8 +1856,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'the_content', $filter_content );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $endpoint = new WP_REST_Posts_Controller( 'post' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_REQUEST( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( '_fields', 'content.rendered' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1809,8 +1892,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'the_content', $filter_content );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $endpoint = new WP_REST_Posts_Controller( 'post' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_REQUEST( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( '_fields', 'content.raw' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1919,6 +2003,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_date( $status, $params, $results ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'timezone_string', $params['timezone_string'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1952,6 +2037,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_with_template() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'theme_post_templates', array( $this, 'filter_theme_post_templates' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // reregister the route as we now have a template available.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2001,6 +2087,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_with_template_none() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'theme_post_templates', array( $this, 'filter_theme_post_templates' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( self::$post_id, '_wp_page_template', 'post-my-test-template.php' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2049,6 +2136,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_as_contributor() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$contributor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'timezone_string', 'America/Chicago' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2182,6 +2270,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_private_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$author_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user = wp_get_current_user();
</span><span class="cx" style="display: block; padding: 0 10px">                $user->add_cap( 'publish_posts', false );
</span><span class="cx" style="display: block; padding: 0 10px">                // Flush capabilities, https://core.trac.wordpress.org/ticket/28374
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2203,6 +2292,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_publish_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$author_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user = wp_get_current_user();
</span><span class="cx" style="display: block; padding: 0 10px">                $user->add_cap( 'publish_posts', false );
</span><span class="cx" style="display: block; padding: 0 10px">                // Flush capabilities, https://core.trac.wordpress.org/ticket/28374
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2408,7 +2498,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( '0', $data['password'] );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2551,15 +2640,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( $params );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $new_data = $response->get_data();
-               $this->assertEquals( "Rob O'Rourke's Diary", $new_data['title']['raw'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $data = $response->get_data();
+               $this->assertEquals( "Rob O'Rourke's Diary", $data['title']['raw'] );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_with_categories() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $category = wp_insert_term( 'Test Category', 'category' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_Request( 'POST', '/wp/v2/posts' );
-               $params   = $this->set_post_data(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
+               $params  = $this->set_post_data(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'password'   => 'testing',
</span><span class="cx" style="display: block; padding: 0 10px">                                'categories' => array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2576,10 +2668,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_with_categories_as_csv() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $category  = wp_insert_term( 'Chicken', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px">                $category2 = wp_insert_term( 'Ribs', 'category' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request   = new WP_REST_Request( 'POST', '/wp/v2/posts' );
-               $params    = $this->set_post_data(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
+               $params  = $this->set_post_data(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'categories' => $category['term_id'] . ',' . $category2['term_id'],
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2593,6 +2687,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_post_with_invalid_categories() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $params  = $this->set_post_data(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2617,6 +2712,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->forbidden_cat = $cats[1];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
</span><span class="cx" style="display: block; padding: 0 10px">                $params  = $this->set_post_data(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2663,6 +2759,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_no_change() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post = get_post( self::$post_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2708,11 +2805,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_rest_update_post_with_empty_date() {
</span><span class="cx" style="display: block; padding: 0 10px">                // Create a new test post.
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Set the post date to the future.
</span><span class="cx" style="display: block; padding: 0 10px">                $future_date = '2919-07-29T18:00:00';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request     = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', $post_id ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', $post_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $params = $this->set_post_data(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2796,6 +2895,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_post_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user = wp_get_current_user();
</span><span class="cx" style="display: block; padding: 0 10px">                $user->add_cap( 'edit_published_posts', false );
</span><span class="cx" style="display: block; padding: 0 10px">                // Flush capabilities, https://core.trac.wordpress.org/ticket/28374
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2950,6 +3050,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_post_date( $status, $params, $results ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'timezone_string', $params['timezone_string'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create( array( 'post_status' => $status ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3012,6 +3113,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_option( 'timezone_string', 'America/Chicago' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Need to set dates using wpdb directly because `wp_update_post` and
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3190,6 +3292,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_post_with_empty_password() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_update_post(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'ID'            => self::$post_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3280,8 +3383,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_post_with_categories() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_set_current_user( self::$editor_id );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_set_current_user( self::$editor_id );
</del><span class="cx" style="display: block; padding: 0 10px">                 $category = wp_insert_term( 'Test Category', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3306,6 +3409,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                $query = parse_url( $categories_path, PHP_URL_QUERY );
</span><span class="cx" style="display: block; padding: 0 10px">                parse_str( $query, $args );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', $args['rest_route'] );
</span><span class="cx" style="display: block; padding: 0 10px">                unset( $args['rest_route'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_query_params( $args );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3316,8 +3420,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_post_with_empty_categories() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_set_current_user( self::$editor_id );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_set_current_user( self::$editor_id );
</del><span class="cx" style="display: block; padding: 0 10px">                 $category = wp_insert_term( 'Test Category', 'category' );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_object_terms( self::$post_id, $category['term_id'], 'category' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3342,6 +3446,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->forbidden_cat = $cats[1];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $params  = $this->set_post_data(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3363,6 +3468,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_with_template() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'theme_post_templates', array( $this, 'filter_theme_post_templates' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // reregister the route as we now have a template available.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3392,6 +3498,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_with_template_none() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'theme_post_templates', array( $this, 'filter_theme_post_templates' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( self::$post_id, '_wp_page_template', 'post-my-test-template.php' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3424,7 +3531,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 39996
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_with_same_template_that_no_longer_exists() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( self::$post_id, '_wp_page_template', 'post-my-invalid-template.php' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3597,6 +3703,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_post_roundtrip_as_author( $raw, $expected ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$author_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertFalse( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_post_roundtrip( $raw, $expected );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3603,6 +3710,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_post_roundtrip_as_editor_unfiltered_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertFalse( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->verify_post_roundtrip(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3654,6 +3762,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_post_roundtrip_as_superadmin_unfiltered_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_post_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3680,6 +3789,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create( array( 'post_title' => 'Deleted post' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3694,6 +3804,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_skip_trash() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create( array( 'post_title' => 'Deleted post' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request          = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3708,7 +3819,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_already_trashed() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create( array( 'post_title' => 'Deleted post' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/posts/%d', $post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3727,6 +3840,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_post_invalid_post_type() {
</span><span class="cx" style="display: block; padding: 0 10px">                $page_id = $this->factory->post->create( array( 'post_type' => 'page' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'DELETE', '/wp/v2/posts/' . $page_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3945,8 +4059,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/posts' );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'OPTIONS', '/wp/v2/posts' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3957,8 +4070,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post_id );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertArrayHasKey( 'my_custom_int', $response->data );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4043,6 +4155,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Check for error on update.
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4071,7 +4184,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_publish_action_ldo_registered() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( new WP_REST_Request( 'OPTIONS', '/wp/v2/posts' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $schema   = $data['schema'];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4083,7 +4195,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_sticky_action_ldo_registered_for_posts() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( new WP_REST_Request( 'OPTIONS', '/wp/v2/posts' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $schema   = $data['schema'];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4095,7 +4206,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_sticky_action_ldo_not_registered_for_non_posts() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( new WP_REST_Request( 'OPTIONS', '/wp/v2/pages' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $schema   = $data['schema'];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4107,7 +4217,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_author_action_ldo_registered_for_post_types_with_author_support() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( new WP_REST_Request( 'OPTIONS', '/wp/v2/posts' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $schema   = $data['schema'];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4119,7 +4228,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_author_action_ldo_not_registered_for_post_types_without_author_support() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 remove_post_type_support( 'post', 'author' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Re-initialize the controller to cache-bust schemas from prior test runs.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4139,7 +4247,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_term_action_ldos_registered() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( new WP_REST_Request( 'OPTIONS', '/wp/v2/posts' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $schema   = $data['schema'];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4159,7 +4266,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_action_links_only_available_in_edit_context() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4175,7 +4281,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_publish_action_link_exists_for_author() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4191,7 +4296,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_publish_action_link_does_not_exist_for_contributor() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$contributor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$contributor_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4207,7 +4311,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_sticky_action_exists_for_editor() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4223,7 +4326,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_sticky_action_does_not_exist_for_author() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4239,7 +4341,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_sticky_action_does_not_exist_for_non_post_posts() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4261,7 +4362,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_author_action_exists_for_editor() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4277,7 +4377,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_author_action_does_not_exist_for_author() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4293,7 +4392,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_author_action_does_not_exist_for_post_types_without_author_support() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 remove_post_type_support( 'post', 'author' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4311,7 +4409,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_term_action_exists_for_editor() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4329,7 +4426,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_term_action_non_hierarchical_exists_for_author() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4345,7 +4441,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_term_action_hierarchical_does_not_exists_for_author() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create( array( 'post_author' => self::$author_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4361,7 +4456,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_term_action_exists_for_contributor() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$contributor_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = self::factory()->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4384,7 +4478,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_unfiltered_html_action_superadmin() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = self::factory()->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$superadmin_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_do_request( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4394,7 +4490,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_unfiltered_html_action_editor() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = self::factory()->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_do_request( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4409,7 +4507,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_assign_unfiltered_html_action_author() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = self::factory()->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$author_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_do_request( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4490,7 +4590,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 39953
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_putting_same_publish_date_does_not_remove_floating_date() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$superadmin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $time = date( 'Y-m-d H:i:s' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4526,7 +4625,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 39953
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_putting_different_publish_date_removes_floating_date() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$superadmin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $time     = date( 'Y-m-d H:i:s' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4569,7 +4667,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 39953
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_publishing_post_with_same_date_removes_floating_date() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$superadmin_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $time = date( 'Y-m-d H:i:s' );
</span></span></pre></div>
<a id="trunktestsphpunittestsrestapiresttagscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-tags-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-tags-controller.php       2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-tags-controller.php 2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16,6 +16,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $contributor;
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $subscriber;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        protected static $tag_ids    = array();
+       protected static $total_tags = 30;
+       protected static $per_page   = 50;
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public static function wpSetUpBeforeClass( $factory ) {
</span><span class="cx" style="display: block; padding: 0 10px">                self::$superadmin    = $factory->user->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -43,9 +47,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'role' => 'subscriber',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        update_site_option( 'site_admins', array( 'superadmin' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Set up tags for pagination tests.
+               for ( $i = 0; $i < self::$total_tags; $i++ ) {
+                       $tag_ids[] = $factory->tag->create(
+                               array(
+                                       'name' => "Tag {$i}",
+                               )
+                       );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpTearDownAfterClass() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -53,6 +67,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                self::delete_user( self::$administrator );
</span><span class="cx" style="display: block; padding: 0 10px">                self::delete_user( self::$editor );
</span><span class="cx" style="display: block; padding: 0 10px">                self::delete_user( self::$subscriber );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Remove tags for pagination tests.
+               foreach ( self::$tag_ids as $tag_id ) {
+                       wp_delete_term( $tag_id, 'post_tag' );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function setUp() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -154,7 +173,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->tag->create();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request  = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_taxonomy_terms_response( $response );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -161,6 +182,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_invalid_permission_for_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -171,7 +193,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $tag1    = $this->factory->tag->create( array( 'name' => 'Season 5' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $tag2    = $this->factory->tag->create( array( 'name' => 'The Be Sharps' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_object_terms( $post_id, array( $tag1, $tag2 ), 'post_tag' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'hide_empty', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -179,7 +203,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Season 5', $data[0]['name'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'The Be Sharps', $data[1]['name'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // invalid value should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'hide_empty' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'hide_empty', 'nothanks' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -186,23 +211,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_include_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = $this->factory->tag->create();
-               $id2     = $this->factory->tag->create();
-               $id3     = $this->factory->tag->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->tag->create();
+               $id2 = $this->factory->tag->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>asc
-               $request->set_param( 'include', array( $id3, $id1 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'asc'.
+               $request->set_param( 'include', array( $id2, $id1 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>include
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'include'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'include' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id3, $data[0]['id'] );
-               // Include invalid value shoud fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id2, $data[0]['id'] );
+
+               // Invalid 'include' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'include', array( 'myterm' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -209,19 +237,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_exclude_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1      = $this->factory->tag->create();
-               $id2      = $this->factory->tag->create();
-               $request  = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id1 = $this->factory->tag->create();
+               $id2 = $this->factory->tag->create();
+
+               $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
+               $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertTrue( in_array( $id2, $ids, true ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
-               // Invalid exclude value should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
+
+               // Invalid 'exclude' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', array( 'invalid' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -228,23 +262,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_offset_query() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = $this->factory->tag->create();
-               $id2     = $this->factory->tag->create();
-               $id3     = $this->factory->tag->create();
-               $id4     = $this->factory->tag->create();
</del><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 3, $response->get_data() );
-               // 'offset' works with 'per_page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( self::$total_tags - 1, $response->get_data() );
+
+               // 'offset' works with 'per_page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'per_page', 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' takes priority over 'page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'offset' takes priority over 'page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' invalid value shoudl fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'offset' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 'moreplease' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -253,7 +287,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_orderby_args() {
</span><span class="cx" style="display: block; padding: 0 10px">                $tag1 = $this->factory->tag->create( array( 'name' => 'Apple' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tag2 = $this->factory->tag->create( array( 'name' => 'Banana' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tag2 = $this->factory->tag->create( array( 'name' => 'Zucchini' ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 /*
</span><span class="cx" style="display: block; padding: 0 10px">                 * Tests:
</span><span class="cx" style="display: block; padding: 0 10px">                 * - orderby
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -268,7 +303,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 'Banana', $data[0]['name'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( 'Zucchini', $data[0]['name'] );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'name' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'asc' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -278,7 +314,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple', $data[0]['name'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid orderby should fail.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'orderby' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -288,7 +325,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $tag0 = $this->factory->tag->create( array( 'name' => 'Cantaloupe' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $tag1 = $this->factory->tag->create( array( 'name' => 'Apple' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $tag2 = $this->factory->tag->create( array( 'name' => 'Banana' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // defaults to orderby=name, order=asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Defaults to 'orderby' => 'name', 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -296,16 +334,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple', $data[0]['name'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Banana', $data[1]['name'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Cantaloupe', $data[2]['name'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // orderby=id, with default order=asc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'id', with default 'order' => 'asc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'id' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 'Cantaloupe', $data[0]['name'] );
-               $this->assertEquals( 'Apple', $data[1]['name'] );
-               $this->assertEquals( 'Banana', $data[2]['name'] );
-               // orderby=id, order=desc
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( 'Tag 0', $data[0]['name'] );
+               $this->assertEquals( 'Tag 1', $data[1]['name'] );
+               $this->assertEquals( 'Tag 2', $data[2]['name'] );
+
+               // 'orderby' => 'id', 'order' => 'desc'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'id' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'desc' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -338,6 +378,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $tag1    = $this->factory->tag->create( array( 'name' => 'DC' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $tag2    = $this->factory->tag->create( array( 'name' => 'Marvel' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->tag->create( array( 'name' => 'Dark Horse' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_object_terms( $post_id, array( $tag1, $tag2 ), 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -349,7 +390,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'DC', $data[0]['name'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Invalid post should error.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Invalid 'post' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', 'invalid-post' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -358,16 +399,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_terms_post_args_paging() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tag_ids = array();
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                for ( $i = 0; $i < 30; $i++ ) {
-                       $tag_ids[] = $this->factory->tag->create(
-                               array(
-                                       'name' => "Tag {$i}",
-                               )
-                       );
-               }
-               wp_set_object_terms( $post_id, $tag_ids, 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp_set_object_terms( $post_id, self::$tag_ids, 'post_tag' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'post', $post_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -432,6 +465,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = $this->factory->post->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_object_terms( $post_id, array( $term1, $term2 ), 'batman' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/batman' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -447,6 +481,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_search_args() {
</span><span class="cx" style="display: block; padding: 0 10px">                $tag1 = $this->factory->tag->create( array( 'name' => 'Apple' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $tag2 = $this->factory->tag->create( array( 'name' => 'Banana' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 /*
</span><span class="cx" style="display: block; padding: 0 10px">                 * Tests:
</span><span class="cx" style="display: block; padding: 0 10px">                 * - search
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -458,6 +493,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'Apple', $data[0]['name'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'Garbage' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -467,8 +503,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_slug_arg() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tag1    = $this->factory->tag->create( array( 'name' => 'Apple' ) );
-               $tag2    = $this->factory->tag->create( array( 'name' => 'Banana' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tag1 = $this->factory->tag->create( array( 'name' => 'Apple' ) );
+               $tag2 = $this->factory->tag->create( array( 'name' => 'Banana' ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'apple' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -483,6 +520,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $id2 = $this->factory->tag->create( array( 'name' => 'Enchilada' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $id3 = $this->factory->tag->create( array( 'name' => 'Burrito' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->tag->create( array( 'name' => 'Pizza' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param(
</span><span class="cx" style="display: block; padding: 0 10px">                        'slug',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -505,6 +543,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $id2 = $this->factory->tag->create( array( 'name' => 'Enchilada' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $id3 = $this->factory->tag->create( array( 'name' => 'Burrito' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->factory->tag->create( array( 'name' => 'Pizza' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'taco,burrito, enchilada' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -536,19 +575,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_terms_pagination_headers() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Start of the index
-               for ( $i = 0; $i < 50; $i++ ) {
-                       $this->factory->tag->create(
-                               array(
-                                       'name' => "Tag {$i}",
-                               )
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total_tags  = self::$total_tags;
+               $total_pages = (int) ceil( $total_tags / 10 );
+
+               // Start of the index.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 50, $headers['X-WP-Total'] );
-               $this->assertEquals( 5, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_tags, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $next_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -557,18 +592,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 3rd page
-               $this->factory->tag->create(
-                       array(
-                               'name' => 'Tag 51',
-                       )
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 3rd page.
+               $this->factory->tag->create();
+               $total_tags++;
+               $total_pages++;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_tags, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -583,31 +617,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/tags' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Last page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Last page.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 6 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', $total_pages );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_tags, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages - 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/tags' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Out of bounds
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Out of bounds.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 8 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', 100 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 51, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_tags, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 6,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/tags' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -623,7 +659,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id       = $this->factory->tag->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id = $this->factory->tag->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_taxonomy_term_response( $response, $id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -633,7 +670,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 39122
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_meta() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id       = $this->factory->tag->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id = $this->factory->tag->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -654,7 +692,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 39122
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_meta_registered_for_different_taxonomy() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id       = $this->factory->tag->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id = $this->factory->tag->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -672,7 +711,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_invalid_permission_for_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                $id = $this->factory->tag->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -695,12 +736,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item_incorrect_taxonomy() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'robin', 'post' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term1    = $this->factory->term->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $term1 = $this->factory->term->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'name'     => 'Cape',
</span><span class="cx" style="display: block; padding: 0 10px">                                'taxonomy' => 'robin',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $term1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_term_invalid', $response, 404 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -708,6 +750,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'description', 'This term is so awesome.' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -724,6 +767,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_contributor() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$contributor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'description', 'This term is so awesome.' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -740,6 +784,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_incorrect_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Incorrect permissions' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -748,6 +793,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_missing_arguments() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_missing_callback_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -765,6 +811,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_with_meta() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'meta', array( 'test_tag_single' => 'hello' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -779,8 +826,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_with_meta_wrong_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $existing_tag_id = $this->factory->tag->create( array( 'name' => 'My Not So Awesome Term' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request         = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $request = new WP_REST_Request( 'POST', '/wp/v2/tags' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'name', 'My Awesome Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'meta', array( 'test_tag_single' => 'hello' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'id', $existing_tag_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -796,13 +845,16 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $orig_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'name'        => 'Original Name',
</span><span class="cx" style="display: block; padding: 0 10px">                        'description' => 'Original Description',
</span><span class="cx" style="display: block; padding: 0 10px">                        'slug'        => 'original-slug',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term      = get_term_by( 'id', $this->factory->tag->create( $orig_args ), 'post_tag' );
-               $request   = new WP_REST_Request( 'POST', '/wp/v2/tags/' . $term->term_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->tag->create( $orig_args ), 'post_tag' );
+
+               $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . $term->term_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'name', 'New Name' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'description', 'New Description' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'new-slug' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -827,10 +879,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_no_change() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'PUT', '/wp/v2/tags/' . $term->term_id );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'PUT', '/wp/v2/tags/' . $term->term_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', $term->slug );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -846,6 +898,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_invalid_term() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Invalid Term' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -854,7 +907,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_incorrect_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Incorrect permissions' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -866,7 +921,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_with_edit_term_cap_granted() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = $this->factory->tag->create_and_get();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = $this->factory->tag->create_and_get();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'New Name' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -891,7 +948,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_with_edit_term_cap_revoked() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = $this->factory->tag->create_and_get();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = $this->factory->tag->create_and_get();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'New Name' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -911,6 +970,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_parent_non_hierarchical_taxonomy() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/tags/' . $term->term_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -959,6 +1019,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_tag_roundtrip_as_editor() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( ! is_multisite(), current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_tag_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -974,6 +1035,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_tag_roundtrip_as_editor_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertFalse( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->verify_tag_roundtrip(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1003,6 +1065,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_tag_roundtrip_as_superadmin() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_tag_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1018,6 +1081,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_tag_roundtrip_as_superadmin_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_tag_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1033,7 +1097,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'DELETE', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1045,6 +1111,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_no_trash() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $term = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request  = new WP_REST_Request( 'DELETE', '/wp/v2/tags/' . $term->term_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1058,6 +1125,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_invalid_term() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'DELETE', '/wp/v2/tags/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_term_invalid', $response, 404 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1065,7 +1133,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_incorrect_permissions() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term     = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'DELETE', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_cannot_delete', $response, 403 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1076,7 +1146,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_with_delete_term_cap_granted() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'DELETE', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1102,7 +1174,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_item_with_delete_term_cap_revoked() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term    = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $term = get_term_by( 'id', $this->factory->tag->create( array( 'name' => 'Deleted Tag' ) ), 'post_tag' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'DELETE', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1121,7 +1195,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_prepare_item() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $term     = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $term = get_term_by( 'id', $this->factory->tag->create(), 'post_tag' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $term->term_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1195,9 +1270,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertArrayHasKey( 'my_custom_int', $data['schema']['properties'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $schema, $data['schema']['properties']['my_custom_int'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tag_id  = $this->factory->tag->create();
-               $request = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $tag_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tag_id = $this->factory->tag->create();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $tag_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertArrayHasKey( 'my_custom_int', $response->data );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1224,7 +1299,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$administrator );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $tag_id = $this->factory->tag->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Check for error on update.
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/tags/%d', $tag_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params(
</span></span></pre></div>
<a id="trunktestsphpunittestsrestapirestuserscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/rest-api/rest-users-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/rest-api/rest-users-controller.php      2019-11-05 19:34:07 UTC (rev 46656)
+++ trunk/tests/phpunit/tests/rest-api/rest-users-controller.php        2019-11-05 20:41:12 UTC (rev 46657)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15,8 +15,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $editor;
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $draft_editor;
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $subscriber;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        protected static $authors = array();
-       protected static $posts   = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       protected static $authors     = array();
+       protected static $posts       = array();
+       protected static $user_ids    = array();
+       protected static $total_users = 30;
+       protected static $per_page    = 50;
+
</ins><span class="cx" style="display: block; padding: 0 10px">         protected static $site;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpSetUpBeforeClass( $factory ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -100,6 +105,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><span class="cx" style="display: block; padding: 0 10px">                        update_site_option( 'site_admins', array( 'superadmin' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Set up users for pagination tests.
+               for ( $i = 0; $i < self::$total_users - 10; $i++ ) {
+                       self::$user_ids[] = $factory->user->create(
+                               array(
+                                       'role'         => 'contributor',
+                                       'display_name' => "User {$i}",
+                               )
+                       );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpTearDownAfterClass() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -110,9 +125,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( self::$posts as $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_delete_post( $post, true );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 foreach ( self::$authors as $author ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        self::delete_user( $author );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 _unregister_post_type( 'r_true_p_true' );
</span><span class="cx" style="display: block; padding: 0 10px">                _unregister_post_type( 'r_true_p_false' );
</span><span class="cx" style="display: block; padding: 0 10px">                _unregister_post_type( 'r_false_p_true' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,6 +138,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        wpmu_delete_blog( self::$site, true );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Remove users for pagination tests.
+               foreach ( self::$user_ids as $user_id ) {
+                       self::delete_user( $user_id );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -212,7 +234,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_with_edit_context_without_permission() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //test with a user not logged in
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Test with a user not logged in.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -219,8 +241,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 401, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //test with a user logged in but without sufficient capabilities; capability in question: 'list_users'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Test with a user logged in but without sufficient capabilities;
+               // capability in question: 'list_users'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -280,19 +304,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_pagination_headers() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $total_users = self::$total_users;
+               $total_pages = (int) ceil( $total_users / 10 );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                for ( $i = 0; $i < 44; $i++ ) {
-                       $this->factory->user->create(
-                               array(
-                                       'name' => "User {$i}",
-                               )
-                       );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Start of the index.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 54, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_users, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $next_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -301,18 +323,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="prev"' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 3rd page
-               $this->factory->user->create(
-                       array(
-                               'name' => 'User 51',
-                       )
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 3rd page.
+               $this->factory->user->create();
+               $total_users++;
+               $total_pages++;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 55, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_users, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'page' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -327,31 +348,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/users' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $next_link . '>; rel="next"', $headers['Link'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Last page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Last page.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 6 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', $total_pages );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 55, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_users, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages - 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/users' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Out of bounds
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Out of bounds.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'page', 8 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'page', 100 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $headers  = $response->get_headers();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( 55, $headers['X-WP-Total'] );
-               $this->assertEquals( 6, $headers['X-WP-TotalPages'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $total_users, $headers['X-WP-Total'] );
+               $this->assertEquals( $total_pages, $headers['X-WP-TotalPages'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $prev_link = add_query_arg(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'page' => 6,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'page' => $total_pages,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        rest_url( 'wp/v2/users' )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -361,12 +384,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_per_page() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                for ( $i = 0; $i < 20; $i++ ) {
-                       $this->factory->user->create( array( 'display_name' => "User {$i}" ) );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 10, count( $response->get_data() ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'per_page', 5 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -375,9 +397,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_page() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                for ( $i = 0; $i < 20; $i++ ) {
-                       $this->factory->user->create( array( 'display_name' => "User {$i}" ) );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'per_page', 5 );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'page', 2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -396,9 +416,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_orderby_name() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $low_id  = $this->factory->user->create( array( 'display_name' => 'AAAAA' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $mid_id  = $this->factory->user->create( array( 'display_name' => 'NNNNN' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $high_id = $this->factory->user->create( array( 'display_name' => 'ZZZZ' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'name' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'desc' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -406,6 +428,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $high_id, $data[0]['id'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'name' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'order', 'asc' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -428,7 +451,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'include', array( $low_id, $high_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( $high_id, $data[0]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -454,7 +476,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'include', array( $low_id, $high_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( $high_id, $data[0]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -542,21 +563,24 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_offset() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 9 users created in wpSetUpBeforeClass(), plus default user.
-               $this->factory->user->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request->set_param( 'per_page', self::$per_page );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertCount( 10, $response->get_data() );
-               // 'offset' works with 'per_page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertCount( self::$total_users - 1, $response->get_data() );
+
+               // 'offset' works with 'per_page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'per_page', 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' takes priority over 'page'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'offset' takes priority over 'page'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'page', 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 2, $response->get_data() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // 'offset' invalid value should error
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Invalid 'offset' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'offset', 'moreplease' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -564,28 +588,33 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_include_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = $this->factory->user->create();
-               $id2     = $this->factory->user->create();
-               $id3     = $this->factory->user->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $id1 = $this->factory->user->create();
+               $id2 = $this->factory->user->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>asc
-               $request->set_param( 'include', array( $id3, $id1 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'asc'.
+               $request->set_param( 'include', array( $id2, $id1 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $id1, $data[0]['id'] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Orderby=>include
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // 'orderby' => 'include'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'orderby', 'include' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 2, count( $data ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertEquals( $id3, $data[0]['id'] );
-               // Invalid include should fail
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertEquals( $id2, $data[0]['id'] );
+
+               // Invalid 'include' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'include', 'invalid' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // No privileges
-               $request->set_param( 'include', array( $id3, $id1 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // No privileges.
+               $request->set_param( 'include', array( $id2, $id1 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -595,20 +624,26 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_exclude_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id1     = $this->factory->user->create();
-               $id2     = $this->factory->user->create();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $id1 = $this->factory->user->create();
+               $id2 = $this->factory->user->create();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request->set_param( 'per_page', 20 ); // there are >10 users at this point
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request->set_param( 'per_page', self::$per_page ); // There are >10 users at this point.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertTrue( in_array( $id2, $ids, true ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', array( $id2 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
-               $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
-               // Invalid exlude value should error.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $ids      = wp_list_pluck( $data, 'id' );
+               $this->assertTrue( in_array( $id1, $ids, true ) );
+               $this->assertFalse( in_array( $id2, $ids, true ) );
+
+               // Invalid 'exclude' should error.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'exclude', 'none-of-those-please' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -616,11 +651,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_search() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'yololololo' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 0, count( $response->get_data() ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $yolo_id = $this->factory->user->create( array( 'display_name' => 'yololololo' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'yololololo' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -632,6 +670,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_nicename' => 'adam',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'ada' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -642,6 +681,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_slug_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->factory->user->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'foo',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -648,12 +688,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_login'   => 'bar',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id2     = $this->factory->user->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id2 = $this->factory->user->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'Moo',
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_login'   => 'foo',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'foo' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -664,6 +705,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_slug_array_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $id1 = $this->factory->user->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'Taco',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -688,6 +730,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_login'   => 'pizza',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param(
</span><span class="cx" style="display: block; padding: 0 10px">                        'slug',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -708,6 +751,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_slug_csv_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $id1 = $this->factory->user->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'Taco',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -732,6 +776,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_login'   => 'pizza',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'slug', 'taco,burrito , enchilada' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'orderby', 'slug' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -746,18 +791,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">        // Note: Do not test using editor role as there is an editor role created in testing and it makes it hard to test this functionality.
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_roles() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tango   = $this->factory->user->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $tango = $this->factory->user->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'tango',
</span><span class="cx" style="display: block; padding: 0 10px">                                'role'         => 'subscriber',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $yolo    = $this->factory->user->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $yolo  = $this->factory->user->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'yolo',
</span><span class="cx" style="display: block; padding: 0 10px">                                'role'         => 'author',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'roles', 'author,subscriber' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -765,16 +812,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 3, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $tango, $data[1]['id'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $yolo, $data[2]['id'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'roles', 'author' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $yolo, $data[0]['id'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'roles', 'author' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_cannot_view', $response, 401 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'roles', 'author' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_cannot_view', $response, 403 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -782,12 +834,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_invalid_roles() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $lolz    = $this->factory->user->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $lolz = $this->factory->user->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'display_name' => 'lolz',
</span><span class="cx" style="display: block; padding: 0 10px">                                'role'         => 'author',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'roles', 'ilovesteak,author' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -794,6 +848,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 1, count( $data ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $lolz, $data[0]['id'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'roles', 'steakisgood' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -804,6 +859,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_who_author_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // First request should include subscriber in the set.
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'search', 'subscriber' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -810,6 +866,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertCount( 1, $response->get_data() );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Second request should exclude subscriber.
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'who', 'authors' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -821,6 +878,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_who_invalid_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'who', 'editor' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -833,6 +891,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_items_who_unauthorized_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$subscriber );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'who', 'authors' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -841,10 +900,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_user_response( $response, 'embed' );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -851,6 +910,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_prepare_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request;
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $user = get_user_by( 'id', get_current_user_id() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -860,6 +920,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_prepare_item_limit_fields() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request;
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( '_fields', 'id,name' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -877,8 +938,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_user_avatar_urls() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$editor ) );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$editor ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -905,6 +965,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_user_empty_capabilities() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $lolz = $this->factory->user->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -913,8 +974,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'roles'        => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 delete_user_option( $lolz, 'capabilities' );
</span><span class="cx" style="display: block; padding: 0 10px">                delete_user_option( $lolz, 'user_level' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', '/wp/v2/users/' . $lolz );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -931,6 +994,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_cannot_get_item_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$user ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_cannot_view', $response, 403 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -944,6 +1008,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_can_get_item_author_of_rest_true_public_true_authenticated() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$authors['r_true_p_true'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -963,6 +1028,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_cannot_get_item_author_of_rest_false_public_true_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$authors['r_false_p_true'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_cannot_view', $response, 403 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -992,12 +1058,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'role' => 'author',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->post_id   = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->post_id = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_author' => $this->author_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $this->author_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_user_response( $response, 'embed' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1009,10 +1078,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'role' => 'author',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $this->author_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 401, $response->get_status() );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->post_id = $this->factory->post->create(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_author' => $this->author_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1019,17 +1091,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_type'   => 'page',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $response      = rest_get_server()->dispatch( $request );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $response = rest_get_server()->dispatch( $request );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->check_get_user_response( $response, 'embed' );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_user_with_edit_context() {
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_user_response( $response, 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1040,12 +1113,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'role' => 'author',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->post_id   = $this->factory->post->create(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->post_id = $this->factory->post->create(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_author' => $this->author_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $this->author_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'context', 'edit' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1055,8 +1131,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_current_user() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', '/wp/v2/users/me' );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', '/wp/v2/users/me' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 200, $response->get_status() );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_get_user_response( $response, 'view' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1070,14 +1145,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_current_user_without_permission() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'GET', '/wp/v2/users/me' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertErrorResponse( 'rest_not_logged_in', $response, 401 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1095,9 +1171,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/x-www-form-urlencoded' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( $params );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $response = rest_get_server()->dispatch( $request );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $response = rest_get_server()->dispatch( $request );
-               $data     = $response->get_data();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $data = $response->get_data();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( 'http://example.com', $data['url'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( array( 'editor' ), $data['roles'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->check_add_edit_user_response( $response );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1105,6 +1181,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_invalid_username() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1127,11 +1204,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/x-www-form-urlencoded' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( $params );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $response->get_data();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertInternalType( 'array', $data['additional_errors'] );
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertCount( 1, $data['additional_errors'] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1152,6 +1229,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_item_illegal_username() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'illegal_user_logins', array( $this, 'get_illegal_user_logins' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1171,7 +1249,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/x-www-form-urlencoded' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( $params );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                remove_filter( 'illegal_user_logins', array( $this, 'get_illegal_user_logins' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1319,6 +1396,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_json_create_user() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1330,8 +1408,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'POST', '/wp/v2/users' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/json' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body( wp_json_encode( $params ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $response = rest_get_server()->dispatch( $request );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $response = rest_get_server()->dispatch( $request );
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->check_add_edit_user_response( $response );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1354,6 +1432,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_user_invalid_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1373,6 +1452,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_user_invalid_email() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1391,6 +1471,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_create_user_invalid_role() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1419,7 +1500,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'locale'     => 'en_US',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $userdata  = get_userdata( $user_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1434,8 +1517,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/x-www-form-urlencoded' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( $_POST );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $response = rest_get_server()->dispatch( $request );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $response = rest_get_server()->dispatch( $request );
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->check_add_edit_user_response( $response, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Check that the name has been updated correctly
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1455,7 +1538,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_no_change() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user = get_userdata( self::$editor );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1483,7 +1568,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_email' => 'testjson2@example.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1539,7 +1626,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_email' => 'testjson@example.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user1 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1556,7 +1645,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_email' => 'testjson@example.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1579,7 +1670,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'locale'     => 'de_DE',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1606,7 +1699,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_email' => 'testjson2@example.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1629,7 +1724,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_email' => 'testjson2@example.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1649,7 +1746,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'last_name'  => 'Original Last',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1686,6 +1785,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1706,6 +1806,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1809,6 +1910,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_user_role_invalid_role() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->allow_user_to_manage_multisite();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1858,10 +1960,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_user_invalid_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $params = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'id'       => '156',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'id'       => '0',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'username' => 'lisasimpson',
</span><span class="cx" style="display: block; padding: 0 10px">                        'password' => 'DavidHasselhoff',
</span><span class="cx" style="display: block; padding: 0 10px">                        'email'    => 'smartgirl63_@yahoo.com',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1886,6 +1989,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'roles', array( 'editor' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1903,6 +2007,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'roles', array( 'editor' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1923,6 +2028,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'roles', array( 'editor' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'name', 'Short-Lived User' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1945,10 +2051,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_update_item_invalid_password() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $request->set_param( 'password', 'no\\backslashes\\allowed' );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2034,6 +2140,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_user_roundtrip_as_editor() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( ! is_multisite(), current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_user_roundtrip(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2060,6 +2167,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_user_roundtrip_as_editor_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$editor );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertFalse( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->verify_user_roundtrip(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2111,6 +2219,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_user_roundtrip_as_superadmin() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $valid_username = is_multisite() ? 'noinvalidcharshere' : 'no-invalid-chars-here';
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_user_roundtrip(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2139,6 +2248,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_user_roundtrip_as_superadmin_html() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertTrue( current_user_can( 'unfiltered_html' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $valid_username = is_multisite() ? 'noinvalidcharshere' : 'no-invalid-chars-here';
</span><span class="cx" style="display: block; padding: 0 10px">                $this->verify_user_roundtrip(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2169,9 +2279,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create( array( 'display_name' => 'Deleted User' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $userdata = get_userdata( $user_id ); // cache for later
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $userdata = get_userdata( $user_id ); // Cache for later.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request  = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'reassign', false );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2193,9 +2304,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create( array( 'display_name' => 'Deleted User' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $userdata = get_userdata( $user_id ); // cache for later
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $userdata = get_userdata( $user_id ); // Cache for later.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'reassign', false );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2213,7 +2325,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_trash_not_supported', $response, 501 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Ensure the user still exists
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Ensure the user still exists.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user = get_user_by( 'id', $user_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertNotEmpty( $user );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2284,6 +2396,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$editor );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request          = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2303,6 +2416,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_user_invalid_id() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request          = new WP_REST_Request( 'DELETE', '/wp/v2/users/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2316,7 +2430,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_delete_user_reassign() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Test with a new user, to avoid any complications
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Test with a new user, to avoid any complications.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user_id     = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $reassign_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px">                $test_post   = $this->factory->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2325,12 +2439,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Sanity check to ensure the factory created the post correctly
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Sanity check to ensure the factory created the post correctly.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post = get_post( $test_post );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $user_id, $post->post_author );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Delete our test user, and reassign to the new author
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // Delete our test user, and reassign to the new author.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request          = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request['force'] = true;
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'reassign', $reassign_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2353,6 +2468,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request          = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2373,6 +2489,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $request          = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2387,6 +2504,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $test_post = $this->factory->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2414,6 +2532,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $test_post = $this->factory->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2441,6 +2560,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $test_post = $this->factory->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2468,6 +2588,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_id = $this->factory->user->create();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->allow_user_to_manage_multisite();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_set_current_user( self::$user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $test_post = $this->factory->post->create(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2556,8 +2677,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/users' );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'OPTIONS', '/wp/v2/users' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $data     = $response->get_data();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2565,13 +2685,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( $schema, $data['schema']['properties']['my_custom_int'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 1 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $current_user = wp_get_current_user( 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                        update_site_option( 'site_admins', array( $current_user->user_login ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', '/wp/v2/users/1' );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $request  = new WP_REST_Request( 'GET', '/wp/v2/users/1' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertArrayHasKey( 'my_custom_int', $response->data );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2581,7 +2701,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'my_custom_int' => 123,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 123, get_user_meta( 1, 'my_custom_int', true ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2594,9 +2713,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'password'      => 'hello',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( 123, $response->data['my_custom_int'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                global $wp_rest_additional_fields;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2622,6 +2739,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 1 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_multisite() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $current_user = wp_get_current_user( 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                        update_site_option( 'site_admins', array( $current_user->user_login ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2634,7 +2752,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'my_custom_int' => 'returnError',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2657,8 +2774,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                restore_current_blog();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2677,8 +2794,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                restore_current_blog();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2697,10 +2814,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                restore_current_blog();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/x-www-form-urlencoded' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( array( 'first_name' => 'New Name' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2719,10 +2836,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                restore_current_blog();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->add_header( 'content-type', 'application/x-www-form-urlencoded' );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_body_params( array( 'first_name' => 'New Name' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2741,10 +2858,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                restore_current_blog();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$user );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'reassign', false );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2763,10 +2880,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                restore_current_blog();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( self::$superadmin );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'force', true );
</span><span class="cx" style="display: block; padding: 0 10px">                $request->set_param( 'reassign', false );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $response = rest_get_server()->dispatch( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertErrorResponse( 'rest_user_invalid_id', $response, 404 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre>
</div>
</div>

</body>
</html>