Version 1
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Plugin / TestPluginManager.php
diff --git a/web/core/tests/Drupal/Tests/Core/Plugin/TestPluginManager.php b/web/core/tests/Drupal/Tests/Core/Plugin/TestPluginManager.php
new file mode 100644 (file)
index 0000000..d1ba489
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+namespace Drupal\Tests\Core\Plugin;
+
+use Drupal\Component\Plugin\Discovery\StaticDiscovery;
+use Drupal\Component\Plugin\Factory\DefaultFactory;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Plugin\DefaultPluginManager;
+
+/**
+ * A plugin manager for condition plugins.
+ */
+class TestPluginManager extends DefaultPluginManager {
+
+  /**
+   * Constructs a TestPluginManager object.
+   *
+   * @param \Traversable $namespaces
+   *   An object that implements \Traversable which contains the root paths
+   *   keyed by the corresponding namespace to look for plugin implementations.
+   * @param array $definitions
+   *   An array of static definitions.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   (optional) The module handler to invoke the alter hook with.
+   * @param string $alter_hook
+   *   (optional) Name of the alter hook.
+   * @param string $interface
+   *   (optional) The interface required for the plugins.
+   */
+  public function __construct(\Traversable $namespaces, array $definitions, ModuleHandlerInterface $module_handler = NULL, $alter_hook = NULL, $interface = NULL) {
+    // Create the object that can be used to return definitions for all the
+    // plugins available for this type. Most real plugin managers use a richer
+    // discovery implementation, but StaticDiscovery lets us add some simple
+    // mock plugins for unit testing.
+    $this->discovery = new StaticDiscovery();
+    $this->factory = new DefaultFactory($this->discovery, $interface);
+
+    // Add the static definitions.
+    foreach ($definitions as $key => $definition) {
+      $this->discovery->setDefinition($key, $definition);
+    }
+
+    $this->moduleHandler = $module_handler;
+
+    if ($alter_hook) {
+      $this->alterInfo($alter_hook);
+    }
+  }
+
+}