Make WordPress Core


Ignore:
Timestamp:
10/04/2015 05:22:11 AM (9 years ago)
Author:
DrewAPicture
Message:

Widgets: Add more tests for registering and unregistering sidebars with 1) no ID, 2) a string ID, 3) a numeric ID.

See #17078.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/widgets.php

    r34816 r34817  
    77 */
    88class Tests_Widgets extends WP_UnitTestCase {
     9    public $sidebar_index;
     10    public $valid_sidebar;
    911
    1012    function clean_up_global_scope() {
     
    2325        global $wp_customize;
    2426        $wp_customize = null;
     27
    2528        parent::tearDown();
    2629    }
     
    4245
    4346    /**
    44      * @see register_sidebars()
     47     * @group sidebar
    4548     */
    4649    function test_register_sidebars_single() {
     
    5558
    5659    /**
    57      * @see register_sidebars()
     60     * @group sidebar
    5861     */
    5962    function test_register_sidebars_multiple() {
     
    7881
    7982    /**
    80      * @see register_sidebar
    81      * @see unregister_sidebar
    82      */
    83     function test_register_and_unregister_sidebar() {
     83     * @group sidebar
     84     */
     85    function test_register_sidebar_with_no_id() {
     86        global $wp_registered_sidebars;
     87
     88        $this->setExpectedIncorrectUsage( 'register_sidebar' );
     89
     90        // Incorrectly register a couple of sidebars for fun.
     91        register_sidebar();
     92        register_sidebar();
     93
     94        $derived_sidebar_id = "sidebar-2"; // Number of sidebars in the global + 1.
     95
     96        $this->assertArrayHasKey( $derived_sidebar_id, $wp_registered_sidebars );
     97    }
     98
     99    /**
     100     * @group sidebar
     101     */
     102    function test_unregister_sidebar_registered_with_no_id() {
     103        global $wp_registered_sidebars;
     104
     105        $this->setExpectedIncorrectUsage( 'register_sidebar' );
     106
     107        // Incorrectly register a couple of sidebars for fun.
     108        register_sidebar();
     109        register_sidebar();
     110
     111        $derived_sidebar_id = "sidebar-2"; // Number of sidebars in the global + 1.
     112
     113        unregister_sidebar( $derived_sidebar_id );
     114
     115        $this->assertArrayNotHasKey( $derived_sidebar_id, $wp_registered_sidebars );
     116    }
     117
     118    /**
     119     * @group sidebar
     120     */
     121    function test_register_sidebar_with_string_id() {
    84122
    85123        global $wp_registered_sidebars;
     
    87125        $sidebar_id = 'wp-unit-test';
    88126        register_sidebar( array( 'id' => $sidebar_id ) );
     127
    89128        $this->assertArrayHasKey( $sidebar_id, $wp_registered_sidebars );
     129    }
     130
     131    /**
     132     * @group sidebar
     133     */
     134    function test_unregister_sidebar_with_string_id() {
     135        global $wp_registered_sidebars;
     136
     137        $sidebar_id = 'wp-unit-tests';
     138        register_sidebar( array( 'id' => $sidebar_id ) );
    90139
    91140        unregister_sidebar( $sidebar_id );
    92         $this->assertArrayNotHasKey( 'wp-unit-test', $wp_registered_sidebars );
     141        $this->assertArrayNotHasKey( $sidebar_id, $wp_registered_sidebars );
     142    }
     143
     144    /**
     145     * @group sidebar
     146     */
     147    function test_register_sidebar_with_numeric_id() {
     148        global $wp_registered_sidebars;
     149
     150        $sidebar_id = 2;
     151        register_sidebar( array( 'id' => $sidebar_id ) );
     152
     153        $this->assertArrayHasKey( $sidebar_id, $wp_registered_sidebars );
     154    }
     155
     156    /**
     157     * @group sidebar
     158     */
     159    function test_unregister_sidebar_with_numeric_id() {
     160        global $wp_registered_sidebars;
     161
     162        $sidebar_id = 2;
     163        register_sidebar( array( 'id' => $sidebar_id ) );
     164
     165        unregister_sidebar( $sidebar_id );
     166        $this->assertArrayNotHasKey( $sidebar_id, $wp_registered_sidebars );
    93167    }
    94168
     
    96170     * Utility hook callback used to store a sidebar ID mid-function.
    97171     */
    98     function retrieve_sidebar_id( $index ) {
     172    function retrieve_sidebar_id( $index, $valid_sidebar ) {
    99173        $this->sidebar_index = $index;
    100     }
    101 
    102     /**
    103      * @group sidebar
     174        $this->valid_sidebar = $valid_sidebar;
     175    }
     176
     177    /**
     178     * @group sidebar
     179     * @group drew
    104180     */
    105181    function test_dynamic_sidebar_using_sidebar_registered_with_no_id() {
    106         global $wp_registered_sidebars;
    107 
    108182        $this->setExpectedIncorrectUsage( 'register_sidebar' );
    109183
    110         // Register a couple of sidebars for fun.
     184        // Incorrectly register a couple of sidebars for fun.
    111185        register_sidebar();
    112186        register_sidebar();
    113187
    114         $derived_sidebar_id = "sidebar-3"; // Number of sidebars in the global + 1.
    115 
    116         add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ) );
    117 
    118         dynamic_sidebar( 3 );
     188        $derived_sidebar_id = "sidebar-2"; // Number of sidebars in the global + 1.
     189
     190        add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ), 10, 2 );
     191
     192        dynamic_sidebar( 2 );
    119193
    120194        $this->assertSame( $derived_sidebar_id, $this->sidebar_index );
     195    }
     196
     197    /**
     198     * @group sidebar
     199     */
     200    function test_dynamic_sidebar_using_invalid_sidebar_id() {
     201        register_sidebar( array( 'id' => 'wp-unit-text' ) );
     202
     203        add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ), 10, 2 );
     204
     205        // 5 is a fake sidebar ID.
     206        dynamic_sidebar( 5 );
     207
     208        /*
     209         * If the sidebar ID is invalid, the second argument passed to
     210         * the 'dynamic_sidebar_before' hook will be false.
     211         */
     212        $this->assertSame( false, $this->valid_sidebar );
    121213    }
    122214
     
    128220        register_sidebar( array( 'id' => $sidebar_id ) );
    129221
    130         add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ) );
     222        add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ), 10, 2 );
    131223
    132224        dynamic_sidebar( $sidebar_id );
     
    142234        register_sidebar( array( 'id' => $sidebar_id ) );
    143235
    144         add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ) );
     236        add_action( 'dynamic_sidebar_before', array( $this, 'retrieve_sidebar_id' ), 10, 2 );
    145237
    146238        dynamic_sidebar( $sidebar_id );
Note: See TracChangeset for help on using the changeset viewer.