class ExtensionSerializationTest
Tests Extension serialization.
@coversDefaultClass \Drupal\Core\Extension\Extension
      
    
@group Extension
Hierarchy
- class \Drupal\Tests\UnitTestCase uses \Drupal\Tests\Traits\PhpUnitWarnings, \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, \Drupal\Tests\RandomGeneratorTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\Core\Extension\ExtensionSerializationTest extends \Drupal\Tests\UnitTestCase
 
 
Expanded class hierarchy of ExtensionSerializationTest
File
- 
              core/
tests/ Drupal/ Tests/ Core/ Extension/ ExtensionSerializationTest.php, line 18  
Namespace
Drupal\Tests\Core\ExtensionView source
class ExtensionSerializationTest extends UnitTestCase {
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    vfsStream::setup('dummy_app_root');
    vfsStream::create([
      'core' => [
        'modules' => [
          'system' => [
            'system.info.yml' => file_get_contents($this->root . '/core/modules/system/system.info.yml'),
          ],
        ],
      ],
    ]);
  }
  
  /**
   * 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
   */
  public function testServiceAppRouteUsage() : void {
    $container = new ContainerBuilder();
    // Set a dummy container app.root to test against.
    $container->setParameter('app.root', 'vfs://dummy_app_root');
    \Drupal::setContainer($container);
    // Instantiate an Extension object for testing unserialization.
    $extension = new Extension($container->getParameter('app.root'), 'module', 'core/modules/system/system.info.yml', 'system.module');
    $extension = unserialize(serialize($extension));
    $reflected_root = new \ReflectionProperty($extension, 'root');
    $this->assertEquals('vfs://dummy_app_root', $reflected_root->getValue($extension));
    // Change the app root and test serializing and unserializing again.
    $container->setParameter('app.root', 'vfs://dummy_app_root2');
    \Drupal::setContainer($container);
    $extension = unserialize(serialize($extension));
    $reflected_root = new \ReflectionProperty($extension, 'root');
    $this->assertEquals('vfs://dummy_app_root2', $reflected_root->getValue($extension));
  }
  
  /**
   * Tests dynamically assigned public properties kept when serialized.
   *
   * @covers ::__sleep
   * @covers ::__wakeup
   */
  public function testPublicProperties() : void {
    $container = new ContainerBuilder();
    // Set a dummy container app.root to test against.
    $container->setParameter('app.root', 'vfs://dummy_app_root');
    \Drupal::setContainer($container);
    $extension = new Extension($container->getParameter('app.root'), 'module', 'core/modules/system/system.info.yml', 'system.module');
    // Assign a public property dynamically.
    $extension->test = 'foo';
    $extension = unserialize(serialize($extension));
    $this->assertSame('foo', $extension->test);
  }
}
Members
| Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides | 
|---|---|---|---|---|---|---|
| ExtensionSerializationTest::setUp | protected | function | Overrides UnitTestCase::setUp | |||
| ExtensionSerializationTest::testPublicProperties | public | function | Tests dynamically assigned public properties kept when serialized. | |||
| ExtensionSerializationTest::testServiceAppRouteUsage | public | function | Tests that the Extension class unserialize method uses the preferred root. | |||
| PhpUnitWarnings::$deprecationWarnings | private static | property | Deprecation warnings from PHPUnit to raise with @trigger_error(). | |||
| PhpUnitWarnings::addWarning | public | function | Converts PHPUnit deprecation warnings to E_USER_DEPRECATED. | |||
| RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | |||
| RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | |||
| RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | |||
| RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |||
| RandomGeneratorTrait::randomStringValidate | Deprecated | public | function | Callback for random string validation. | ||
| UnitTestCase::$root | protected | property | The app root. | 1 | ||
| UnitTestCase::getClassResolverStub | protected | function | Returns a stub class resolver. | |||
| UnitTestCase::getConfigFactoryStub | public | function | Returns a stub config factory that behaves according to the passed array. | |||
| UnitTestCase::getConfigStorageStub | public | function | Returns a stub config storage that returns the supplied configuration. | |||
| UnitTestCase::getContainerWithCacheTagsInvalidator | protected | function | Sets up a container with a cache tags invalidator. | |||
| UnitTestCase::getStringTranslationStub | public | function | Returns a stub translation manager that just returns the passed string. | |||
| UnitTestCase::setUpBeforeClass | public static | function | ||||
| UnitTestCase::__get | public | function | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.