annotate core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php @ 4:a9cd425dd02b

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