You are here

public function LocaleTranslatedSchemaDefinitionTest::testTranslatedUpdate in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php \Drupal\Tests\locale\Functional\LocaleTranslatedSchemaDefinitionTest::testTranslatedUpdate()
  2. 9 core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php \Drupal\Tests\locale\Functional\LocaleTranslatedSchemaDefinitionTest::testTranslatedUpdate()

Tests that translations do not affect the update system.

File

core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php, line 70

Class

LocaleTranslatedSchemaDefinitionTest
Adds and configures languages to check field schema definition.

Namespace

Drupal\Tests\locale\Functional

Code

public function testTranslatedUpdate() {

  // Visit the update page to collect any strings that may be translatable.
  $user = $this
    ->drupalCreateUser([
    'administer software updates',
  ]);
  $this
    ->drupalLogin($user);
  $update_url = $GLOBALS['base_url'] . '/update.php';

  // Collect strings from the PHP warning page, if applicable, as well as the
  // main update page.
  $this
    ->drupalGet($update_url, [
    'external' => TRUE,
  ]);
  $this
    ->updateRequirementsProblem();

  /** @var \Drupal\locale\StringDatabaseStorage $stringStorage */
  $stringStorage = \Drupal::service('locale.storage');
  $sources = $stringStorage
    ->getStrings();

  // Translate all source strings found.
  foreach ($sources as $source) {
    $stringStorage
      ->createTranslation([
      'lid' => $source->lid,
      'language' => 'fr',
      'translation' => $this
        ->randomMachineName(100),
    ])
      ->save();
  }

  // Ensure that there are no updates just due to translations. Check for
  // markup and a link instead of specific text because text may be
  // translated.
  $this
    ->drupalGet($update_url . '/selection', [
    'external' => TRUE,
  ]);
  $this
    ->assertSession()
    ->statusMessageExists('status');
  $this
    ->assertSession()
    ->linkByHrefNotExists('fr/update.php/run', 'No link to run updates.');
}