3 namespace Drupal\Tests\Component\Annotation\Plugin\Discovery;
5 use Drupal\Component\Annotation\Plugin;
6 use Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator;
7 use Drupal\Component\Plugin\Definition\PluginDefinition;
8 use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
9 use PHPUnit\Framework\TestCase;
12 * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator
15 class AnnotationBridgeDecoratorTest extends TestCase {
18 * @covers ::getDefinitions
20 public function testGetDefinitions() {
22 $definitions['object'] = new ObjectDefinition(['id' => 'foo']);
23 $definitions['array'] = ['id' => 'bar'];
24 $discovery = $this->prophesize(DiscoveryInterface::class);
25 $discovery->getDefinitions()->willReturn($definitions);
27 $decorator = new AnnotationBridgeDecorator($discovery->reveal(), TestAnnotation::class);
30 'object' => new ObjectDefinition(['id' => 'foo']),
31 'array' => new ObjectDefinition(['id' => 'bar']),
33 $this->assertEquals($expected, $decorator->getDefinitions());
38 class TestAnnotation extends Plugin {
43 public function get() {
44 return new ObjectDefinition($this->definition);
48 class ObjectDefinition extends PluginDefinition {
51 * ObjectDefinition constructor.
53 * @param array $definition
55 public function __construct(array $definition) {
56 foreach ($definition as $property => $value) {
57 $this->{$property} = $value;