LocalesLocationAddIndexUpdateTest.php

Same filename and directory in other branches
  1. 11.x core/modules/locale/tests/src/Functional/LocalesLocationAddIndexUpdateTest.php

Namespace

Drupal\Tests\locale\Functional

File

core/modules/locale/tests/src/Functional/LocalesLocationAddIndexUpdateTest.php

View source
<?php

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

use Drupal\FunctionalTests\Update\UpdatePathTestBase;

/**
 * Tests Locale update functions.
 *
 * @group locale
 */
class LocalesLocationAddIndexUpdateTest extends UpdatePathTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';
  
  /**
   * {@inheritdoc}
   */
  protected function setDatabaseDumpFiles() {
    $this->databaseDumpFiles[] = $this->root . '/core/modules/system/tests/fixtures/update/drupal-10.3.0.filled.standard.php.gz';
  }
  
  /**
   * Tests locale_update_10300().
   *
   * @see locale_update_10300
   */
  public function testIndex() : void {
    $this->assertFalse(\Drupal::database()->schema()
      ->indexExists('locales_location', 'type_name'));
    // Run updates and test them.
    $this->runUpdates();
    $this->assertTrue(\Drupal::database()->schema()
      ->indexExists('locales_location', 'type_name'));
  }
  
  /**
   * Tests locale_update_10300().
   *
   * @see locale_update_10300
   */
  public function testExistingIndex() : void {
    $spec = [];
    $spec['locales_location'] = [
      'description' => 'Location information for source strings.',
      'fields' => [
        'lid' => [
          'type' => 'serial',
          'not null' => TRUE,
          'description' => 'Unique identifier of this location.',
        ],
        'sid' => [
          'type' => 'int',
          'not null' => TRUE,
          'description' => 'Unique identifier of this string.',
        ],
        'type' => [
          'type' => 'varchar_ascii',
          'length' => 50,
          'not null' => TRUE,
          'default' => '',
          'description' => 'The location type (file, config, path, etc).',
        ],
        'name' => [
          'type' => 'varchar',
          'length' => 255,
          'not null' => TRUE,
          'default' => '',
          'description' => 'Type dependent location information (file name, path, etc).',
        ],
        'version' => [
          'type' => 'varchar_ascii',
          'length' => 20,
          'not null' => TRUE,
          'default' => 'none',
          'description' => 'Version of Drupal where the location was found.',
        ],
      ],
      'primary key' => [
        'lid',
      ],
      'foreign keys' => [
        'locales_source' => [
          'table' => 'locales_source',
          'columns' => [
            'sid' => 'lid',
          ],
        ],
      ],
      'indexes' => [
        'string_type' => [
          'sid',
          'type',
        ],
        'type_name' => [
          'type',
          'name',
        ],
      ],
    ];
    \Drupal::database()->schema()
      ->addIndex('locales_location', 'type_name', [
      'type',
      'name',
      'sid',
    ], $spec['locales_location']);
    // Run updates and test them.
    $this->runUpdates();
    // Ensure the update runs successfully even if an index existed prior to
    // the update.
    $schema = \Drupal::database()->schema();
    $this->assertTrue($schema->indexExists('locales_location', 'type_name'));
  }

}

Classes

Title Deprecated Summary
LocalesLocationAddIndexUpdateTest Tests Locale update functions.

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