3 namespace Drupal\KernelTests\Core\Plugin\Discovery;
5 use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
8 * Tests that plugins are correctly discovered using annotated classes.
12 class AnnotatedClassDiscoveryTest extends DiscoveryTestBase {
14 protected function setUp() {
16 $this->expectedDefinitions = [
21 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Apple',
22 'provider' => 'plugin_test',
29 'bread' => t('Banana bread'),
31 'singular' => '@count loaf',
32 'plural' => '@count loaves',
36 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Banana',
37 'provider' => 'plugin_test',
43 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Cherry',
44 'provider' => 'plugin_test',
50 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Kale',
51 'provider' => 'plugin_test',
57 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Orange',
58 'provider' => 'plugin_test',
62 'label' => 'Big Apple',
64 'class' => 'Drupal\plugin_test_extended\Plugin\plugin_test\fruit\BigApple',
65 'provider' => 'plugin_test_extended',
67 'extending_non_installed_class' => [
68 'id' => 'extending_non_installed_class',
69 'label' => 'A plugin whose class is extending from a non-installed module class',
71 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\ExtendingNonInstalledClass',
72 'provider' => 'plugin_test',
76 $base_directory = \Drupal::root() . '/core/modules/system/tests/modules/plugin_test/src';
77 $base_directory2 = \Drupal::root() . '/core/modules/system/tests/modules/plugin_test_extended/src';
78 $namespaces = new \ArrayObject(['Drupal\plugin_test' => $base_directory, 'Drupal\plugin_test_extended' => $base_directory2]);
80 $annotation_namespaces = ['Drupal\plugin_test\Plugin\Annotation', 'Drupal\plugin_test_extended\Plugin\Annotation'];
81 $this->discovery = new AnnotatedClassDiscovery('Plugin/plugin_test/fruit', $namespaces, 'Drupal\Component\Annotation\Plugin', $annotation_namespaces);
82 $this->emptyDiscovery = new AnnotatedClassDiscovery('Plugin/non_existing_module/non_existing_plugin_type', $namespaces);