Chris@0: TRUE]); Chris@0: // Ensure that FileCacheFactory has a prefix. Chris@0: FileCacheFactory::setPrefix('prefix'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::__construct Chris@0: * @covers ::getPluginNamespaces Chris@0: */ Chris@0: public function testGetPluginNamespaces() { Chris@0: $discovery = new AnnotatedClassDiscovery(['com/example' => [__DIR__]]); Chris@0: Chris@0: $reflection = new \ReflectionMethod($discovery, 'getPluginNamespaces'); Chris@0: $reflection->setAccessible(TRUE); Chris@0: Chris@0: $result = $reflection->invoke($discovery); Chris@0: $this->assertEquals(['com/example' => [__DIR__]], $result); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getDefinitions Chris@0: * @covers ::prepareAnnotationDefinition Chris@0: * @covers ::getAnnotationReader Chris@0: */ Chris@0: public function testGetDefinitions() { Chris@0: $discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']]); Chris@0: $this->assertEquals([ Chris@0: 'discovery_test_1' => [ Chris@0: 'id' => 'discovery_test_1', Chris@0: 'class' => 'com\example\PluginNamespace\DiscoveryTest1', Chris@0: ], Chris@0: ], $discovery->getDefinitions()); Chris@0: Chris@0: $custom_annotation_discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']], CustomPlugin::class, ['Drupal\Tests\Component\Annotation']); Chris@0: $this->assertEquals([ Chris@0: 'discovery_test_1' => [ Chris@0: 'id' => 'discovery_test_1', Chris@0: 'class' => 'com\example\PluginNamespace\DiscoveryTest1', Chris@0: 'title' => 'Discovery test plugin', Chris@0: ], Chris@0: ], $custom_annotation_discovery->getDefinitions()); Chris@0: Chris@0: $empty_discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']], CustomPlugin2::class, ['Drupal\Tests\Component\Annotation']); Chris@0: $this->assertEquals([], $empty_discovery->getDefinitions()); Chris@0: } Chris@0: Chris@0: } Chris@0: Chris@0: /** Chris@0: * Custom plugin annotation. Chris@0: * Chris@0: * @Annotation Chris@0: */ Chris@0: class CustomPlugin extends Plugin { Chris@0: Chris@0: /** Chris@0: * The plugin ID. Chris@0: * Chris@0: * @var string Chris@0: */ Chris@0: public $id; Chris@0: Chris@0: /** Chris@0: * The plugin title. Chris@0: * Chris@0: * @var string Chris@0: * Chris@0: * @ingroup plugin_translatable Chris@0: */ Chris@0: public $title = ''; Chris@0: Chris@0: } Chris@0: Chris@0: /** Chris@0: * Custom plugin annotation. Chris@0: * Chris@0: * @Annotation Chris@0: */ Chris@0: class CustomPlugin2 extends Plugin {}