Version 1
[yaffs-website] / web / core / modules / system / tests / src / Unit / Menu / SystemLocalTasksTest.php
diff --git a/web/core/modules/system/tests/src/Unit/Menu/SystemLocalTasksTest.php b/web/core/modules/system/tests/src/Unit/Menu/SystemLocalTasksTest.php
new file mode 100644 (file)
index 0000000..c632a3e
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+namespace Drupal\Tests\system\Unit\Menu;
+
+use Drupal\Core\Extension\Extension;
+use Drupal\Tests\Core\Menu\LocalTaskIntegrationTestBase;
+
+/**
+ * Tests existence of system local tasks.
+ *
+ * @group system
+ */
+class SystemLocalTasksTest extends LocalTaskIntegrationTestBase {
+
+  /**
+   * The mocked theme handler.
+   *
+   * @var \Drupal\Core\Extension\ThemeHandlerInterface|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $themeHandler;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->directoryList = [
+      'system' => 'core/modules/system',
+    ];
+
+    $this->themeHandler = $this->getMock('Drupal\Core\Extension\ThemeHandlerInterface');
+
+    $theme = new Extension($this->root, 'theme', '/core/themes/bartik', 'bartik.info.yml');
+    $theme->status = 1;
+    $theme->info = ['name' => 'bartik'];
+    $this->themeHandler->expects($this->any())
+      ->method('listInfo')
+      ->will($this->returnValue([
+        'bartik' => $theme,
+      ]));
+    $this->themeHandler->expects($this->any())
+      ->method('hasUi')
+      ->with('bartik')
+      ->willReturn(TRUE);
+    $this->container->set('theme_handler', $this->themeHandler);
+  }
+
+  /**
+   * Tests local task existence.
+   *
+   * @dataProvider getSystemAdminRoutes
+   */
+  public function testSystemAdminLocalTasks($route, $expected) {
+    $this->assertLocalTasks($route, $expected);
+  }
+
+  /**
+   * Provides a list of routes to test.
+   */
+  public function getSystemAdminRoutes() {
+    return [
+      ['system.admin_content', [['system.admin_content']]],
+      ['system.theme_settings_theme', [
+        ['system.themes_page', 'system.theme_settings'],
+        ['system.theme_settings_global', 'system.theme_settings_theme:bartik'],
+      ]],
+    ];
+  }
+
+}