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 {}
|