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