Version 1
[yaffs-website] / web / core / modules / system / tests / modules / plugin_test / src / Plugin / TestPluginManager.php
diff --git a/web/core/modules/system/tests/modules/plugin_test/src/Plugin/TestPluginManager.php b/web/core/modules/system/tests/modules/plugin_test/src/Plugin/TestPluginManager.php
new file mode 100644 (file)
index 0000000..ec464a5
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\plugin_test\Plugin;
+
+use Drupal\Component\Plugin\PluginManagerBase;
+use Drupal\Component\Plugin\Discovery\StaticDiscovery;
+use Drupal\Component\Plugin\Factory\DefaultFactory;
+
+/**
+ * Defines a plugin manager used by Plugin API unit tests.
+ */
+class TestPluginManager extends PluginManagerBase {
+  public function __construct() {
+
+    // 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();
+
+    // A simple plugin: a mock user login block.
+    $this->discovery->setDefinition('user_login', [
+      'label' => 'User login',
+      'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockUserLoginBlock',
+    ]);
+
+    // In addition to finding all of the plugins available for a type, a plugin
+    // type must also be able to create instances of that plugin. For example, a
+    // specific instance of a "User login" block, configured with a custom
+    // title. To handle plugin instantiation, plugin managers can use one of the
+    // factory classes included with the plugin system, or create their own.
+    // DefaultFactory is a simple, general purpose factory suitable for
+    // many kinds of plugin types. Factories need access to the plugin
+    // definitions (e.g., since that's where the plugin's class is specified),
+    // so we provide it the discovery object.
+    $this->factory = new DefaultFactory($this->discovery);
+  }
+
+}