You are here

protected function EntityContextDefinitionDeprecationTest::setUp in Drupal 8

Overrides UnitTestCase::setUp

File

core/tests/Drupal/Tests/Core/Plugin/Context/EntityContextDefinitionDeprecationTest.php, line 44

Class

EntityContextDefinitionDeprecationTest
Test deprecated use of ContextDefinition as an EntityContextDefinition.

Namespace

Drupal\Tests\Core\Plugin\Context

Code

protected function setUp() {
  parent::setUp();

  // Mock container services needed for constraint validation.
  $constraint_manager = $this
    ->prophesize(ConstraintManager::class);
  $constraint_manager
    ->create(Argument::type('string'), Argument::any())
    ->willReturn(TRUE);
  $typed_data_manager = $this
    ->prophesize(TypedDataManagerInterface::class);
  $typed_data_manager
    ->getValidationConstraintManager()
    ->willReturn($constraint_manager
    ->reveal());
  $validator = $this
    ->prophesize(ValidatorInterface::class)
    ->reveal();
  $typed_data_manager
    ->getValidator()
    ->willReturn($validator);
  $container = new ContainerBuilder();
  $container
    ->set('typed_data_manager', $typed_data_manager
    ->reveal());
  \Drupal::setContainer($container);

  // Create a deprecated entity context definition and prepare the
  // compatibility layer to be overridden.
  $this->definition = new ContextDefinition('entity:node');

  // The code paths we're testing are private and protected, so use reflection
  // to manipulate protected properties.
  $reflector = new \ReflectionObject($this->definition);

  // Ensure that the BC object was created correctly.
  $this
    ->assertTrue($reflector
    ->hasProperty('entityContextDefinition'));
  $this->compatibilityLayer = $reflector
    ->getProperty('entityContextDefinition');
  $this->compatibilityLayer
    ->setAccessible(TRUE);
  $this
    ->assertInstanceOf(EntityContextDefinition::class, $this->compatibilityLayer
    ->getValue($this->definition));
}