BrokenCacheUpdateTest.php

Same filename and directory in other branches
  1. 9 core/modules/system/tests/src/Functional/UpdateSystem/BrokenCacheUpdateTest.php
  2. 8.9.x core/modules/system/tests/src/Functional/UpdateSystem/BrokenCacheUpdateTest.php
  3. 11.x core/modules/system/tests/src/Functional/UpdateSystem/BrokenCacheUpdateTest.php

Namespace

Drupal\Tests\system\Functional\UpdateSystem

File

core/modules/system/tests/src/Functional/UpdateSystem/BrokenCacheUpdateTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\system\Functional\UpdateSystem;

use Drupal\Core\Database\Database;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\UpdatePathTestTrait;

/**
 * Ensures that a broken or out-of-date element info cache is not used.
 *
 * @group Update
 */
class BrokenCacheUpdateTest extends BrowserTestBase {
  use UpdatePathTestTrait;
  
  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    $this->ensureUpdatesToRun();
  }
  
  /**
   * Ensures that a broken or out-of-date element info cache is not used.
   */
  public function testUpdate() : void {
    $connection = Database::getConnection();
    // Create broken element info caches entries.
    $insert = $connection->upsert('cache_discovery');
    $insert->key('cid');
    $fields = [
      'cid' => 'element_info',
      'data' => 'BROKEN',
      'expire' => -1,
      'created' => '1549505157.144',
      'serialized' => 1,
      'tags' => '',
      'checksum' => 0,
    ];
    $insert->fields($fields);
    $fields['cid'] = 'element_info_build:claro';
    $insert->values(array_values($fields));
    $fields['cid'] = 'element_info_build:stark';
    $insert->values(array_values($fields));
    $insert->execute();
    $this->runUpdates();
    // Caches should have been cleared at this point.
    $count = (int) $connection->select('cache_discovery')
      ->condition('cid', [
      'element_info',
      'element_info_build:claro',
      'element_info_build:stark',
    ], 'IN')
      ->countQuery()
      ->execute()
      ->fetchField();
    $this->assertSame(0, $count);
  }

}

Classes

Title Deprecated Summary
BrokenCacheUpdateTest Ensures that a broken or out-of-date element info cache is not used.

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