wordpress-develop/tests/phpunit/tests/menu/wpAjaxMenuQuickSearch.php
Gary Pendergast 8f95800d52 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.



git-svn-id: https://develop.svn.wordpress.org/trunk@42343 602fd350-edb4-49c9-b593-d223f7449a82
2017-11-30 23:09:33 +00:00

123 lines
2.7 KiB
PHP

<?php
/**
* @group menu
*/
class Tests_Menu_WpAjaxMenuQuickSeach extends WP_UnitTestCase {
/**
* Current screen.
*
* @var mixed
*/
protected $current_screen;
/**
* Set up. Workaround set_current_screen( null ) not working due to $hook_suffix not being set.
*/
function setUp() {
global $current_screen;
$this->current_screen = $current_screen;
parent::setUp();
}
/**
* Tear down. Workaround set_current_screen( null ) not working due to $hook_suffix not being set.
*/
function tearDown() {
global $current_screen;
parent::tearDown();
$current_screen = $this->current_screen;
}
/**
* Test search returns results for pages.
*
* @ticket 27042
*/
public function test_search_returns_results_for_pages() {
include_once ABSPATH . 'wp-admin/includes/nav-menu.php';
self::factory()->post->create_many(
3, array(
'post_type' => 'page',
'post_content' => 'foo',
)
);
self::factory()->post->create(
array(
'post_type' => 'page',
'post_content' => 'bar',
)
);
$request = array(
'type' => 'quick-search-posttype-page',
'q' => 'foo',
'response-format' => 'json',
);
$output = get_echo( '_wp_ajax_menu_quick_search', array( $request ) );
$this->assertNotEmpty( $output );
$results = explode( "\n", trim( $output ) );
$this->assertCount( 3, $results );
}
/**
* Test that search only returns results for published posts.
*
* @ticket 33742
*/
public function test_search_returns_results_for_published_posts() {
require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
// This will make sure that WP_Query sets is_admin to true.
set_current_screen( 'nav-menu.php' );
self::factory()->post->create(
array(
'post_type' => 'post',
'post_status' => 'publish',
'post_title' => 'Publish',
'post_content' => 'FOO',
)
);
self::factory()->post->create(
array(
'post_type' => 'post',
'post_status' => 'draft',
'post_title' => 'Draft',
'post_content' => 'FOO',
)
);
self::factory()->post->create(
array(
'post_type' => 'post',
'post_status' => 'pending',
'post_title' => 'Pending',
'post_content' => 'FOO',
)
);
self::factory()->post->create(
array(
'post_type' => 'post',
'post_status' => 'future',
'post_title' => 'Future',
'post_content' => 'FOO',
'post_date' => gmdate( 'Y-m-d H:i:s', strtotime( '+1 month' ) ),
)
);
$request = array(
'type' => 'quick-search-posttype-post',
'q' => 'FOO',
);
$output = get_echo( '_wp_ajax_menu_quick_search', array( $request ) );
$this->assertNotEmpty( $output );
$results = explode( "\n", trim( $output ) );
$this->assertCount( 1, $results );
}
}