<!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>[42737] trunk: Taxonomy: restore TagSearch unit tests and correct deprecated version string.</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 { 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/42737">42737</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/42737","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>adamsilverstein</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2018-02-25 16:27:57 +0000 (Sun, 25 Feb 2018)</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'>Taxonomy: restore TagSearch unit tests and correct deprecated version string.

Reverts unit test removal, instead changing them to expect the function to be deprecated.
Correct the version the ajax callback was deprecated.

Amends <a href="https://core.trac.wordpress.org/changeset/42614">[42614]</a>.

Props dlh, ocean90.
Fixes <a href="https://core.trac.wordpress.org/ticket/38922">#38922</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminincludesdeprecatedphp">trunk/src/wp-admin/includes/deprecated.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunktestsphpunittestsajaxTagSearchphp">trunk/tests/phpunit/tests/ajax/TagSearch.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminincludesdeprecatedphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/deprecated.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/deprecated.php        2018-02-25 16:07:09 UTC (rev 42736)
+++ trunk/src/wp-admin/includes/deprecated.php  2018-02-25 16:27:57 UTC (rev 42737)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1519,10 +1519,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Ajax handler for tag search.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 3.1.0
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @deprecated 4.9.0 Use the REST API tags endpoint instead.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @deprecated 5.0.0 Use the REST API tags endpoint instead.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function wp_ajax_ajax_tag_search() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        _deprecated_function( __FUNCTION__, '4.8', '/wp-json/wp/v2/tags' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ _deprecated_function( __FUNCTION__, '5.0.0', '/wp-json/wp/v2/tags' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( ! isset( $_GET['tax'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_die( 0 );
</span></span></pre></div>
<a id="trunktestsphpunittestsajaxTagSearchphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/tests/phpunit/tests/ajax/TagSearch.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/ajax/TagSearch.php                              (rev 0)
+++ trunk/tests/phpunit/tests/ajax/TagSearch.php        2018-02-25 16:27:57 UTC (rev 42737)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,167 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * Admin ajax functions to be tested
+ */
+require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
+
+/**
+ * Testing ajax tag search functionality
+ *
+ * @package    WordPress
+ * @subpackage UnitTests
+ * @since      3.4.0
+ * @group      ajax
+ */
+class Tests_Ajax_TagSearch extends WP_Ajax_UnitTestCase {
+
+       /**
+        * List of terms to insert on setup
+        *
+        * @var array
+        */
+       private static $terms = array(
+               'chattels',
+               'depo',
+               'energumen',
+               'figuriste',
+               'habergeon',
+               'impropriation',
+       );
+
+       private static $term_ids = array();
+
+       public static function wpSetUpBeforeClass() {
+               foreach ( self::$terms as $t ) {
+                       self::$term_ids[] = wp_insert_term( $t, 'post_tag' );
+               }
+       }
+
+       /**
+        * Test as an admin
+        *
+        * @expectedDeprecated wp_ajax_ajax_tag_search
+        */
+       public function test_post_tag() {
+
+               // Become an administrator
+               $this->_setRole( 'administrator' );
+
+               // Set up a default request
+               $_GET['tax'] = 'post_tag';
+               $_GET['q']   = 'chat';
+
+               // Make the request
+               try {
+                       $this->_handleAjax( 'ajax-tag-search' );
+               } catch ( WPAjaxDieContinueException $e ) {
+                       unset( $e );
+               }
+
+               // Ensure we found the right match
+               $this->assertEquals( $this->_last_response, 'chattels' );
+       }
+
+       /**
+        * Test with no results
+        *
+        * @expectedDeprecated wp_ajax_ajax_tag_search
+        */
+       public function test_no_results() {
+
+               // Become an administrator
+               $this->_setRole( 'administrator' );
+
+               // Set up a default request
+               $_GET['tax'] = 'post_tag';
+               $_GET['q']   = md5( uniqid() );
+
+               // Make the request
+               // No output, so we get a stop exception
+               $this->setExpectedException( 'WPAjaxDieStopException', '' );
+               $this->_handleAjax( 'ajax-tag-search' );
+       }
+
+       /**
+        * Test with commas
+        *
+        * @expectedDeprecated wp_ajax_ajax_tag_search
+        */
+       public function test_with_comma() {
+
+               // Become an administrator
+               $this->_setRole( 'administrator' );
+
+               // Set up a default request
+               $_GET['tax'] = 'post_tag';
+               $_GET['q']   = 'some,nonsense, terms,chat'; // Only the last term in the list is searched
+
+               // Make the request
+               try {
+                       $this->_handleAjax( 'ajax-tag-search' );
+               } catch ( WPAjaxDieContinueException $e ) {
+                       unset( $e );
+               }
+
+               // Ensure we found the right match
+               $this->assertEquals( $this->_last_response, 'chattels' );
+       }
+
+       /**
+        * Test as a logged out user
+        *
+        * @expectedDeprecated wp_ajax_ajax_tag_search
+        */
+       public function test_logged_out() {
+
+               // Log out
+               wp_logout();
+
+               // Set up a default request
+               $_GET['tax'] = 'post_tag';
+               $_GET['q']   = 'chat';
+
+               // Make the request
+               $this->setExpectedException( 'WPAjaxDieStopException', '-1' );
+               $this->_handleAjax( 'ajax-tag-search' );
+       }
+
+       /**
+        * Test with an invalid taxonomy type
+        *
+        * @expectedDeprecated wp_ajax_ajax_tag_search
+        */
+       public function test_invalid_tax() {
+
+               // Become an administrator
+               $this->_setRole( 'administrator' );
+
+               // Set up a default request
+               $_GET['tax'] = 'invalid-taxonomy';
+               $_GET['q']   = 'chat';
+
+               // Make the request
+               $this->setExpectedException( 'WPAjaxDieStopException', '0' );
+               $this->_handleAjax( 'ajax-tag-search' );
+       }
+
+       /**
+        * Test as an unprivileged user
+        *
+        * @expectedDeprecated wp_ajax_ajax_tag_search
+        */
+       public function test_unprivileged_user() {
+
+               // Become an administrator
+               $this->_setRole( 'subscriber' );
+
+               // Set up a default request
+               $_GET['tax'] = 'post_tag';
+               $_GET['q']   = 'chat';
+
+               // Make the request
+               $this->setExpectedException( 'WPAjaxDieStopException', '-1' );
+               $this->_handleAjax( 'ajax-tag-search' );
+       }
+
+}
</ins></span></pre>
</div>
</div>

</body>
</html>