| | 258 | /** |
| | 259 | * Test that when a submenu has the same slug as a parent item, that it's just appended and ignores the priority. |
| | 260 | * |
| | 261 | * @ticket 48599 |
| | 262 | */ |
| | 263 | function test_priority_when_parent_slug_child_slug_are_the_same() { |
| | 264 | global $submenu, $menu; |
| | 265 | |
| | 266 | // Reset menus. |
| | 267 | $submenu = array(); |
| | 268 | $menu = array(); |
| | 269 | $current_user = get_current_user_id(); |
| | 270 | $admin_user = self::factory()->user->create( array( 'role' => 'administrator' ) ); |
| | 271 | wp_set_current_user( $admin_user ); |
| | 272 | set_current_screen( 'dashboard' ); |
| | 273 | |
| | 274 | // Setup a menu with some items. |
| | 275 | add_menu_page( 'Main Menu', 'Main Menu','manage_options','main_slug','main_page_callback'); |
| | 276 | add_submenu_page( 'main_slug', 'SubMenu 1', 'SubMenu 1', 'manage_options', 'main_slug', 'submenu_callback_1', 1 ); |
| | 277 | add_submenu_page( 'main_slug', 'SubMenu 2', 'SubMenu 2', 'manage_options', 'submenu_page2', 'submenu_callback_2', 2 ); |
| | 278 | add_submenu_page( 'main_slug', 'SubMenu 3', 'SubMenu 3', 'manage_options', 'submenu_page3', 'submenu_callback_3', 3 ); |
| | 279 | |
| | 280 | |
| | 281 | // Clean up the temporary user. |
| | 282 | wp_set_current_user( $current_user ); |
| | 283 | wp_delete_user( $admin_user ); |
| | 284 | |
| | 285 | // Verify the menu was inserted at the expected position. |
| | 286 | $this->assertSame( 'main_slug', $submenu['main_slug'][0][2] ); |
| | 287 | $this->assertSame( 'submenu_page2', $submenu['main_slug'][1][2] ); |
| | 288 | $this->assertSame( 'submenu_page3', $submenu['main_slug'][2][2] ); |
| | 289 | } |
| | 290 | |
| | 291 | /** |
| | 292 | * Passing a string as priority will fail. |
| | 293 | * |
| | 294 | * @ticket 48599 |
| | 295 | */ |
| | 296 | function test_passing_string_as_priority_fires_doing_it_wrong() { |
| | 297 | $this->setExpectedIncorrectUsage('add_submenu_page' ); |
| | 298 | global $submenu, $menu; |
| | 299 | |
| | 300 | // Reset menus. |
| | 301 | $submenu = array(); |
| | 302 | $menu = array(); |
| | 303 | $current_user = get_current_user_id(); |
| | 304 | $admin_user = self::factory()->user->create( array( 'role' => 'administrator' ) ); |
| | 305 | wp_set_current_user( $admin_user ); |
| | 306 | set_current_screen( 'dashboard' ); |
| | 307 | |
| | 308 | // Setup a menu with some items. |
| | 309 | add_menu_page( 'Main Menu', 'Main Menu','manage_options','main_slug','main_page_callback'); |
| | 310 | add_submenu_page( 'main_slug', 'SubMenu 1', 'SubMenu 1', 'manage_options', 'submenu_page_1', 'submenu_callback_1', '2' ); |
| | 311 | |
| | 312 | |
| | 313 | // Clean up the temporary user. |
| | 314 | wp_set_current_user( $current_user ); |
| | 315 | wp_delete_user( $admin_user ); |
| | 316 | |
| | 317 | // Verify the menu was inserted at the expected position. |
| | 318 | $this->assertSame( 'submenu_page_1', $submenu['main_slug'][1][2] ); |
| | 319 | } |
| | 320 | |