Mercurial > hg > cmmr2012-drupal-site
diff core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,100 @@ +<?php + +namespace Drupal\Tests\Component\Annotation; + +use Drupal\Component\Annotation\Plugin; +use Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery; +use Drupal\Component\FileCache\FileCacheFactory; +use PHPUnit\Framework\TestCase; + +/** + * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery + * @group Annotation + */ +class AnnotatedClassDiscoveryTest extends TestCase { + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + // Ensure the file cache is disabled. + FileCacheFactory::setConfiguration([FileCacheFactory::DISABLE_CACHE => TRUE]); + // Ensure that FileCacheFactory has a prefix. + FileCacheFactory::setPrefix('prefix'); + } + + /** + * @covers ::__construct + * @covers ::getPluginNamespaces + */ + public function testGetPluginNamespaces() { + $discovery = new AnnotatedClassDiscovery(['com/example' => [__DIR__]]); + + $reflection = new \ReflectionMethod($discovery, 'getPluginNamespaces'); + $reflection->setAccessible(TRUE); + + $result = $reflection->invoke($discovery); + $this->assertEquals(['com/example' => [__DIR__]], $result); + } + + /** + * @covers ::getDefinitions + * @covers ::prepareAnnotationDefinition + * @covers ::getAnnotationReader + */ + public function testGetDefinitions() { + $discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']]); + $this->assertEquals([ + 'discovery_test_1' => [ + 'id' => 'discovery_test_1', + 'class' => 'com\example\PluginNamespace\DiscoveryTest1', + ], + ], $discovery->getDefinitions()); + + $custom_annotation_discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']], CustomPlugin::class, ['Drupal\Tests\Component\Annotation']); + $this->assertEquals([ + 'discovery_test_1' => [ + 'id' => 'discovery_test_1', + 'class' => 'com\example\PluginNamespace\DiscoveryTest1', + 'title' => 'Discovery test plugin', + ], + ], $custom_annotation_discovery->getDefinitions()); + + $empty_discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']], CustomPlugin2::class, ['Drupal\Tests\Component\Annotation']); + $this->assertEquals([], $empty_discovery->getDefinitions()); + } + +} + +/** + * Custom plugin annotation. + * + * @Annotation + */ +class CustomPlugin extends Plugin { + + /** + * The plugin ID. + * + * @var string + */ + public $id; + + /** + * The plugin title. + * + * @var string + * + * @ingroup plugin_translatable + */ + public $title = ''; + +} + +/** + * Custom plugin annotation. + * + * @Annotation + */ +class CustomPlugin2 extends Plugin {}