You are here

public function ExtensionSerializationTest::testServiceAppRouteUsage in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Extension/ExtensionSerializationTest.php \Drupal\Tests\Core\Extension\ExtensionSerializationTest::testServiceAppRouteUsage()

Tests that the Extension class unserialize method uses the preferred root.

When the Extension unserialize method is called on serialized Extension object data, test that the Extension object's root property is set to the container's app.root and not the DRUPAL_ROOT constant if the service container app.root is available.

@covers ::__sleep @covers ::__wakeup

File

core/tests/Drupal/Tests/Core/Extension/ExtensionSerializationTest.php, line 46

Class

ExtensionSerializationTest
Tests Extension serialization.

Namespace

Drupal\Tests\Core\Extension

Code

public function testServiceAppRouteUsage() {

  // The assumption of our test is that DRUPAL_ROOT is not defined.
  $this
    ->assertFalse(defined('DRUPAL_ROOT'), 'Constant DRUPAL_ROOT is defined.');
  $container = new ContainerBuilder();

  // Set a dummy container app.root to test against.
  $container
    ->set('app.root', 'vfs://dummy_app_root');
  \Drupal::setContainer($container);

  // Instantiate an Extension object for testing unserialization.
  $extension = new Extension($container
    ->get('app.root'), 'module', 'core/modules/system/system.info.yml', 'system.module');
  $extension = unserialize(serialize($extension));
  $this
    ->assertEquals('vfs://dummy_app_root', $this
    ->readAttribute($extension, 'root'));
}