plugin = new TestContextAwarePlugin([], 'the_sisko', new TestPluginDefinition()); } /** * @covers ::getContextDefinitions */ public function testGetContextDefinitions() { $this->assertInternalType('array', $this->plugin->getContextDefinitions()); } /** * @covers ::getContextDefinition */ public function testGetContextDefinition() { // The context is not defined, so an exception will be thrown. $this->setExpectedException(ContextException::class, 'The person context is not a valid context.'); $this->plugin->getContextDefinition('person'); } /** * @covers ::setContextValue */ public function testSetContextValue() { $typed_data_manager = $this->prophesize(TypedDataManagerInterface::class); $container = new ContainerBuilder(); $container->set('typed_data_manager', $typed_data_manager->reveal()); \Drupal::setContainer($container); $this->plugin->getPluginDefinition()->addContextDefinition('foo', new ContextDefinition('string')); $this->assertFalse($this->plugin->setContextCalled); $this->plugin->setContextValue('foo', new StringData(new DataDefinition(), 'bar')); $this->assertTrue($this->plugin->setContextCalled); } } class TestPluginDefinition extends PluginDefinition implements ContextAwarePluginDefinitionInterface { use ContextAwarePluginDefinitionTrait; } class TestContextAwarePlugin extends ContextAwarePluginBase { /** * Indicates if ::setContext() has been called or not. * * @var bool */ public $setContextCalled = FALSE; /** * {@inheritdoc} */ public function setContext($name, ComponentContextInterface $context) { parent::setContext($name, $context); $this->setContextCalled = TRUE; } }