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 PHPUnit\Framework\TestCase;
|
Chris@14
|
7
|
Chris@14
|
8 /**
|
Chris@14
|
9 * @coversDefaultClass \Drupal\Component\Annotation\Plugin
|
Chris@14
|
10 * @group Annotation
|
Chris@14
|
11 */
|
Chris@14
|
12 class PluginTest extends TestCase {
|
Chris@14
|
13
|
Chris@14
|
14 /**
|
Chris@14
|
15 * @covers ::__construct
|
Chris@14
|
16 * @covers ::parse
|
Chris@14
|
17 * @covers ::get
|
Chris@14
|
18 */
|
Chris@14
|
19 public function testGet() {
|
Chris@14
|
20 // Assert all values are accepted through constructor and default value is
|
Chris@14
|
21 // used for non existent but defined property.
|
Chris@14
|
22 $plugin = new PluginStub([
|
Chris@14
|
23 'foo' => 'bar',
|
Chris@14
|
24 'biz' => [
|
Chris@14
|
25 'baz' => 'boom',
|
Chris@14
|
26 ],
|
Chris@14
|
27 'nestedAnnotation' => new Plugin([
|
Chris@14
|
28 'foo' => 'bar',
|
Chris@14
|
29 ]),
|
Chris@14
|
30 ]);
|
Chris@14
|
31 $this->assertEquals([
|
Chris@14
|
32 // This property wasn't in our definition but is defined as a property on
|
Chris@14
|
33 // our plugin class.
|
Chris@14
|
34 'defaultProperty' => 'testvalue',
|
Chris@14
|
35 'foo' => 'bar',
|
Chris@14
|
36 'biz' => [
|
Chris@14
|
37 'baz' => 'boom',
|
Chris@14
|
38 ],
|
Chris@14
|
39 'nestedAnnotation' => [
|
Chris@14
|
40 'foo' => 'bar',
|
Chris@14
|
41 ],
|
Chris@14
|
42 ], $plugin->get());
|
Chris@14
|
43
|
Chris@14
|
44 // Without default properties, we get a completely empty plugin definition.
|
Chris@14
|
45 $plugin = new Plugin([]);
|
Chris@14
|
46 $this->assertEquals([], $plugin->get());
|
Chris@14
|
47 }
|
Chris@14
|
48
|
Chris@14
|
49 /**
|
Chris@14
|
50 * @covers ::getProvider
|
Chris@14
|
51 */
|
Chris@14
|
52 public function testGetProvider() {
|
Chris@14
|
53 $plugin = new Plugin(['provider' => 'example']);
|
Chris@14
|
54 $this->assertEquals('example', $plugin->getProvider());
|
Chris@14
|
55 }
|
Chris@14
|
56
|
Chris@14
|
57 /**
|
Chris@14
|
58 * @covers ::setProvider
|
Chris@14
|
59 */
|
Chris@14
|
60 public function testSetProvider() {
|
Chris@14
|
61 $plugin = new Plugin([]);
|
Chris@14
|
62 $plugin->setProvider('example');
|
Chris@14
|
63 $this->assertEquals('example', $plugin->getProvider());
|
Chris@14
|
64 }
|
Chris@14
|
65
|
Chris@14
|
66 /**
|
Chris@14
|
67 * @covers ::getId
|
Chris@14
|
68 */
|
Chris@14
|
69 public function testGetId() {
|
Chris@14
|
70 $plugin = new Plugin(['id' => 'example']);
|
Chris@14
|
71 $this->assertEquals('example', $plugin->getId());
|
Chris@14
|
72 }
|
Chris@14
|
73
|
Chris@14
|
74 /**
|
Chris@14
|
75 * @covers ::getClass
|
Chris@14
|
76 */
|
Chris@14
|
77 public function testGetClass() {
|
Chris@14
|
78 $plugin = new Plugin(['class' => 'example']);
|
Chris@14
|
79 $this->assertEquals('example', $plugin->getClass());
|
Chris@14
|
80 }
|
Chris@14
|
81
|
Chris@14
|
82 /**
|
Chris@14
|
83 * @covers ::setClass
|
Chris@14
|
84 */
|
Chris@14
|
85 public function testSetClass() {
|
Chris@14
|
86 $plugin = new Plugin([]);
|
Chris@14
|
87 $plugin->setClass('example');
|
Chris@14
|
88 $this->assertEquals('example', $plugin->getClass());
|
Chris@14
|
89 }
|
Chris@14
|
90
|
Chris@14
|
91 }
|
Chris@14
|
92 /**
|
Chris@14
|
93 * {@inheritdoc}
|
Chris@14
|
94 */
|
Chris@14
|
95 class PluginStub extends Plugin {
|
Chris@14
|
96 protected $defaultProperty = 'testvalue';
|
Chris@14
|
97
|
Chris@14
|
98 }
|