wordpress-develop/tests/phpunit/tests/menu/wpAjaxMenuQuickSearch.php
John Blackbourn 4889e7a8d2 Menus: Allow empty taxonomy terms to be surfaced when searching for items.
This brings the behaviour inline with that of browsing terms or using the All Items tab, which correctly shows empty terms.

Props birgire, audrasjb

Fixes #45298

git-svn-id: https://develop.svn.wordpress.org/trunk@47747 602fd350-edb4-49c9-b593-d223f7449a82
2020-05-02 22:34:50 +00:00

150 lines
3.3 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() {
require_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 );
}
/**
* Test that search displays terms that are not assigned to any posts.
*
* @ticket 45298
*/
public function test_search_should_return_unassigned_term_items() {
register_taxonomy( 'wptests_tax', 'post' );
$this->factory->term->create(
array(
'taxonomy' => 'wptests_tax',
'name' => 'foobar',
)
);
$request = array(
'type' => 'quick-search-taxonomy-wptests_tax',
'q' => 'foobar',
);
$output = get_echo( '_wp_ajax_menu_quick_search', array( $request ) );
$this->assertNotEmpty( $output );
$results = explode( "\n", trim( $output ) );
$this->assertCount( 1, $results );
}
}