diff --git a/core/modules/system/lib/Drupal/system/Tests/Menu/LocalTasksTest.php b/core/modules/system/lib/Drupal/system/Tests/Menu/LocalTasksTest.php index 0f54856..28ccb5d 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Menu/LocalTasksTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Menu/LocalTasksTest.php @@ -14,7 +14,7 @@ */ class LocalTasksTest extends WebTestBase { - public static $modules = array('menu_test'); + public static $modules = array('menu_test', 'entity_test'); public static function getInfo() { return array( @@ -198,6 +198,33 @@ public function testPluginLocalTask() { $this->assertEqual($definitions['menu_local_task_test_tasks_settings_sub1']['provider'], 'menu_test'); $this->assertEqual($definitions['menu_local_task_test_tasks_settings_sub2']['provider'], 'menu_test'); $this->assertEqual($definitions['menu_local_task_test_tasks_settings_sub3']['provider'], 'menu_test'); + + $entity = \Drupal::entityManager()->getStorageController('entity_test')->create(array('bundle' => 'test')); + $entity->save(); + + $this->drupalGet('menu-local-task-test-upcasting/1/sub1'); + + $tasks = array( + 'menu-local-task-test-upcasting/1/sub1', + 'menu-local-task-test-upcasting/1/sub2', + ); + $this->assertLocalTasks($tasks, 0); + + $result = $this->xpath('//ul[contains(@class, "tabs")]//li[contains(@class, "active")]'); + $this->assertEqual(1, count($result), 'There are tabs active on both levels.'); + $this->assertEqual('upcasting sub1', (string) $result[0]->a, 'The settings tab is active.'); + + $this->drupalGet('menu-local-task-test-upcasting/1/sub2'); + + $tasks = array( + 'menu-local-task-test-upcasting/1/sub1', + 'menu-local-task-test-upcasting/1/sub2', + ); + $this->assertLocalTasks($tasks, 0); + + $result = $this->xpath('//ul[contains(@class, "tabs")]//li[contains(@class, "active")]'); + $this->assertEqual(1, count($result), 'There are tabs active on both levels.'); + $this->assertEqual('upcasting sub2', (string) $result[0]->a, 'The settings tab is active.'); } } diff --git a/core/modules/system/tests/modules/menu_test/menu_test.local_tasks.yml b/core/modules/system/tests/modules/menu_test/menu_test.local_tasks.yml index a7cec6e..7d270f3 100644 --- a/core/modules/system/tests/modules/menu_test/menu_test.local_tasks.yml +++ b/core/modules/system/tests/modules/menu_test/menu_test.local_tasks.yml @@ -35,3 +35,20 @@ menu_local_task_test_tasks_settings_derived: tab_parent_id: menu_local_task_test_tasks_settings derivative: Drupal\menu_test\Plugin\Derivative\LocalTaskTest weight: 50 +menu_local_task_test.placeholder_sub1: + route_name: menu_test.local_task_test_placeholder_sub1 + title: 'placeholder sub1' + tab_root_id: menu_local_task_test_placeholder_sub1 +menu_local_task_test_placeholder_sub2: + route_name: menu_test.local_task_test_placeholder_sub2 + title: 'placeholder sub2' + tab_root_id: menu_local_task_test_placeholder_sub1 +menu_local_task_test.upcasting_sub1: + route_name: menu_test.local_task_test_upcasting_sub1 + title: 'upcasting sub1' + tab_root_id: menu_local_task_test_upcasting_sub1 +menu_local_task_test_upcasting_sub2: + route_name: menu_test.local_task_test_upcasting_sub2 + title: 'upcasting sub2' + tab_root_id: menu_local_task_test_upcasting_sub1 + weight: 10 diff --git a/core/modules/system/tests/modules/menu_test/menu_test.routing.yml b/core/modules/system/tests/modules/menu_test/menu_test.routing.yml index 7823aed..708816a 100644 --- a/core/modules/system/tests/modules/menu_test/menu_test.routing.yml +++ b/core/modules/system/tests/modules/menu_test/menu_test.routing.yml @@ -138,6 +138,20 @@ menu_test.local_task_test_placeholder_sub2: requirements: _access: 'TRUE' +menu_test.local_task_test_upcasting_sub1: + path: '/menu-local-task-test-upcasting/{entity_test}/sub1' + defaults: + _content: '\Drupal\menu_test\TestControllers::test1' + requirements: + _access: 'TRUE' + +menu_test.local_task_test_upcasting_sub2: + path: '/menu-local-task-test-upcasting/{entity_test}/sub2' + defaults: + _content: '\Drupal\menu_test\TestControllers::test1' + requirements: + _access: 'TRUE' + menu_test.optional_placeholder: path: '/menu-test/optional/{placeholder}' defaults: