function MenuTreeSerializationTitleTest::testUpdate

Ensures that the system_update_8001() runs as expected.

File

core/modules/system/tests/src/Functional/Update/MenuTreeSerializationTitleTest.php, line 33

Class

MenuTreeSerializationTitleTest
Tests system_update_8001().

Namespace

Drupal\Tests\system\Functional\Update

Code

public function testUpdate() {
  $this->runUpdates();
  // Ensure that some fields got dropped.
  $database = \Drupal::database();
  $schema = $database->schema();
  if (!$schema->tableExists('menu_tree')) {
    return;
  }
  $this->assertFalse($schema->fieldExists('menu_tree', 'title_arguments'));
  $this->assertFalse($schema->fieldExists('menu_tree', 'title_contexts'));
  // Ensure that all titles and description values can be unserialized.
  $select = $database->select('menu_tree');
  $result = $select->fields('menu_tree', [
    'id',
    'title',
    'description',
  ])
    ->execute()
    ->fetchAllAssoc('id');
  // The test coverage relies upon the fact that unserialize() would emit a
  // warning if the value is not a valid serialized value.
  foreach ($result as $link) {
    $title = unserialize($link->title);
    $description = unserialize($link->description);
    // Verify that all the links from system module have a been updated with
    // a TranslatableMarkup as title and description due to the rebuild.
    if (strpos($link->id, 'system.') === 0) {
      $this->assertInstanceOf(TranslatableMarkup::class, $title);
      if ($description) {
        $this->assertInstanceOf(TranslatableMarkup::class, $description);
      }
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.