WordPress.org

Make WordPress Core

Ticket #32700: 32700.2.diff

File 32700.2.diff, 3.5 KB (added by birgire, 2 years ago)
  • src/wp-admin/includes/nav-menu.php

    diff --git src/wp-admin/includes/nav-menu.php src/wp-admin/includes/nav-menu.php
    index 9c4c6fb..6aafe93 100644
    function _wp_nav_menu_meta_box_object( $object = null ) { 
    877877                                'post_status' => 'publish',
    878878                        );
    879879
     880                // Attachments have a status of 'inherit'
     881                } elseif ( 'attachment' == $object->name ) {
     882                        $object->_default_query = array(
     883                                'post_status' => 'inherit',
     884                        );
     885
    880886                // Categories should be in reverse chronological order.
    881887                } elseif ( 'category' == $object->name ) {
    882888                        $object->_default_query = array(
  • new file tests/phpunit/tests/menu/wp-nav-menu-meta-boxes.php

    diff --git tests/phpunit/tests/menu/wp-nav-menu-meta-boxes.php tests/phpunit/tests/menu/wp-nav-menu-meta-boxes.php
    new file mode 100644
    index 0000000..e1275f5
    - +  
     1<?php
     2/**
     3 * Nav Menu Meta Boxes tests.
     4 *
     5 * @package WordPress
     6 */
     7
     8/**
     9 * Tests for nav menu meta boxes
     10 *
     11 * @group menus
     12 */
     13class Tests_Nav_Menu_Meta_Boxes extends WP_UnitTestCase {
     14
     15        /**
     16         * Set up before class
     17         */
     18        public static function setUpBeforeClass() {
     19                require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     20                parent::setUpBeforeClass();
     21        }
     22
     23        /**
     24         * The nav menu meta box object for attachments should have inherit post status
     25         *
     26         * @ticket 32700
     27         */
     28        function test_attachment_post_type_object_should_have_inherit_post_status_as_meta_box_object() {
     29                $post_type_object = get_post_type_object( 'attachment' );
     30
     31                $actual = apply_filters( 'nav_menu_meta_box_object', $post_type_object );
     32
     33                $expected = array(
     34                        'post_status' => 'inherit',
     35                );
     36
     37                $this->assertSame( $expected, $actual->_default_query );
     38        }
     39
     40        /**
     41         * The nav menu meta box for attachments should show no items when there are no attachments available
     42         *
     43         * @ticket 32700
     44         */
     45        function test_attachment_meta_box_with_no_items() {
     46                $post_type_object = get_post_type_object( 'attachment' );
     47                $post_type_object = apply_filters( 'nav_menu_meta_box_object', $post_type_object );
     48                $box = array(
     49                        'id'    => 'add-' . $post_type_object->name,
     50                        'title' => $post_type_object->labels->name,
     51                        'args'  => $post_type_object,
     52                );
     53                $this->expectOutputString( '<p>No items.</p>' );
     54                wp_nav_menu_item_post_type_meta_box( null, $box );
     55        }
     56
     57        /**
     58         * The nav menu meta box for attachments should show items when there are attachments available
     59         *
     60         * @ticket 32700
     61         */
     62        function test_attachment_meta_box_with_with_items() {
     63                $attachment_id = self::factory()->attachment->create_object( 'foobar.jpg', 0, array(
     64                        'post_title' => 'FooBar',
     65                ) );
     66                $post_type_object = get_post_type_object( 'attachment' );
     67                $post_type_object = apply_filters( 'nav_menu_meta_box_object', $post_type_object );
     68                $box = array(
     69                        'id'    => 'add-' . $post_type_object->name,
     70                        'title' => $post_type_object->labels->name,
     71                        'args'  => $post_type_object,
     72                );
     73                $this->expectOutputRegex( '#<li><label class="menu-item-title"><input([^>])*>\s*FooBar</label>#' );
     74                wp_nav_menu_item_post_type_meta_box( null, $box );
     75                $output = $this->getActualOutput();
     76
     77                $this->assertContains( '<div id="posttype-attachment" class="posttypediv">', $output );
     78                $this->assertContains( 'href="#tabs-panel-posttype-attachment-most-recent"', $output );
     79                $this->assertContains( 'href="#attachment-all"', $output );
     80                $this->assertContains( 'href="#tabs-panel-posttype-attachment-search"', $output );
     81                $this->assertNotContains( 'No items', $output );
     82        }
     83}