3 namespace Drupal\Tests\Component\Annotation;
5 use Drupal\Component\Annotation\Plugin;
6 use PHPUnit\Framework\TestCase;
9 * @coversDefaultClass \Drupal\Component\Annotation\Plugin
12 class PluginTest extends TestCase {
15 * @covers ::__construct
19 public function testGet() {
20 // Assert all values are accepted through constructor and default value is
21 // used for non existent but defined property.
22 $plugin = new PluginStub([
27 'nestedAnnotation' => new Plugin([
32 // This property wasn't in our definition but is defined as a property on
34 'defaultProperty' => 'testvalue',
39 'nestedAnnotation' => [
44 // Without default properties, we get a completely empty plugin definition.
45 $plugin = new Plugin([]);
46 $this->assertEquals([], $plugin->get());
50 * @covers ::getProvider
52 public function testGetProvider() {
53 $plugin = new Plugin(['provider' => 'example']);
54 $this->assertEquals('example', $plugin->getProvider());
58 * @covers ::setProvider
60 public function testSetProvider() {
61 $plugin = new Plugin([]);
62 $plugin->setProvider('example');
63 $this->assertEquals('example', $plugin->getProvider());
69 public function testGetId() {
70 $plugin = new Plugin(['id' => 'example']);
71 $this->assertEquals('example', $plugin->getId());
77 public function testGetClass() {
78 $plugin = new Plugin(['class' => 'example']);
79 $this->assertEquals('example', $plugin->getClass());
85 public function testSetClass() {
86 $plugin = new Plugin([]);
87 $plugin->setClass('example');
88 $this->assertEquals('example', $plugin->getClass());
95 class PluginStub extends Plugin {
96 protected $defaultProperty = 'testvalue';