annotate core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2
Chris@14 3 namespace Drupal\Tests\Component\Annotation;
Chris@14 4
Chris@14 5 use Drupal\Component\Annotation\Plugin;
Chris@14 6 use Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery;
Chris@14 7 use Drupal\Component\FileCache\FileCacheFactory;
Chris@14 8 use PHPUnit\Framework\TestCase;
Chris@14 9
Chris@14 10 /**
Chris@14 11 * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery
Chris@14 12 * @group Annotation
Chris@14 13 */
Chris@14 14 class AnnotatedClassDiscoveryTest extends TestCase {
Chris@14 15
Chris@14 16 /**
Chris@14 17 * {@inheritdoc}
Chris@14 18 */
Chris@14 19 protected function setUp() {
Chris@14 20 parent::setUp();
Chris@14 21 // Ensure the file cache is disabled.
Chris@14 22 FileCacheFactory::setConfiguration([FileCacheFactory::DISABLE_CACHE => TRUE]);
Chris@14 23 // Ensure that FileCacheFactory has a prefix.
Chris@14 24 FileCacheFactory::setPrefix('prefix');
Chris@14 25 }
Chris@14 26
Chris@14 27 /**
Chris@14 28 * @covers ::__construct
Chris@14 29 * @covers ::getPluginNamespaces
Chris@14 30 */
Chris@14 31 public function testGetPluginNamespaces() {
Chris@14 32 $discovery = new AnnotatedClassDiscovery(['com/example' => [__DIR__]]);
Chris@14 33
Chris@14 34 $reflection = new \ReflectionMethod($discovery, 'getPluginNamespaces');
Chris@14 35 $reflection->setAccessible(TRUE);
Chris@14 36
Chris@14 37 $result = $reflection->invoke($discovery);
Chris@14 38 $this->assertEquals(['com/example' => [__DIR__]], $result);
Chris@14 39 }
Chris@14 40
Chris@14 41 /**
Chris@14 42 * @covers ::getDefinitions
Chris@14 43 * @covers ::prepareAnnotationDefinition
Chris@14 44 * @covers ::getAnnotationReader
Chris@14 45 */
Chris@14 46 public function testGetDefinitions() {
Chris@14 47 $discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']]);
Chris@14 48 $this->assertEquals([
Chris@14 49 'discovery_test_1' => [
Chris@14 50 'id' => 'discovery_test_1',
Chris@14 51 'class' => 'com\example\PluginNamespace\DiscoveryTest1',
Chris@14 52 ],
Chris@14 53 ], $discovery->getDefinitions());
Chris@14 54
Chris@14 55 $custom_annotation_discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']], CustomPlugin::class, ['Drupal\Tests\Component\Annotation']);
Chris@14 56 $this->assertEquals([
Chris@14 57 'discovery_test_1' => [
Chris@14 58 'id' => 'discovery_test_1',
Chris@14 59 'class' => 'com\example\PluginNamespace\DiscoveryTest1',
Chris@14 60 'title' => 'Discovery test plugin',
Chris@14 61 ],
Chris@14 62 ], $custom_annotation_discovery->getDefinitions());
Chris@14 63
Chris@14 64 $empty_discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']], CustomPlugin2::class, ['Drupal\Tests\Component\Annotation']);
Chris@14 65 $this->assertEquals([], $empty_discovery->getDefinitions());
Chris@14 66 }
Chris@14 67
Chris@14 68 }
Chris@14 69
Chris@14 70 /**
Chris@14 71 * Custom plugin annotation.
Chris@14 72 *
Chris@14 73 * @Annotation
Chris@14 74 */
Chris@14 75 class CustomPlugin extends Plugin {
Chris@14 76
Chris@14 77 /**
Chris@14 78 * The plugin ID.
Chris@14 79 *
Chris@14 80 * @var string
Chris@14 81 */
Chris@14 82 public $id;
Chris@14 83
Chris@14 84 /**
Chris@14 85 * The plugin title.
Chris@14 86 *
Chris@14 87 * @var string
Chris@14 88 *
Chris@14 89 * @ingroup plugin_translatable
Chris@14 90 */
Chris@14 91 public $title = '';
Chris@14 92
Chris@14 93 }
Chris@14 94
Chris@14 95 /**
Chris@14 96 * Custom plugin annotation.
Chris@14 97 *
Chris@14 98 * @Annotation
Chris@14 99 */
Chris@14 100 class CustomPlugin2 extends Plugin {}