function LanguageNegotiationFormOverrideTest::testFormWithOverride

Same name and namespace in other branches
  1. 9 core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php \Drupal\Tests\config\Functional\LanguageNegotiationFormOverrideTest::testFormWithOverride()
  2. 8.9.x core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php \Drupal\Tests\config\Functional\LanguageNegotiationFormOverrideTest::testFormWithOverride()
  3. 11.x core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php \Drupal\Tests\config\Functional\LanguageNegotiationFormOverrideTest::testFormWithOverride()

Tests that overrides do not affect language-negotiation form values.

File

core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php, line 30

Class

LanguageNegotiationFormOverrideTest
Tests language-negotiation overrides are not on language-negotiation form.

Namespace

Drupal\Tests\config\Functional

Code

public function testFormWithOverride() : void {
  $this->drupalLogin($this->drupalCreateUser([
    'access administration pages',
    'administer site configuration',
    'administer languages',
    'view the administration theme',
  ]));
  $overridden_value_en = 'whatever';
  $overridden_value_es = 'loquesea';
  // Set up an override.
  $settings['config']['language.negotiation']['url']['prefixes'] = (object) [
    'value' => [
      'en' => $overridden_value_en,
      'es' => $overridden_value_es,
    ],
    'required' => TRUE,
  ];
  $this->writeSettings($settings);
  // Add predefined language.
  $edit = [
    'predefined_langcode' => 'es',
  ];
  $this->drupalGet('admin/config/regional/language/add');
  $this->submitForm($edit, 'Add language');
  // Overridden string for language-negotiation should not exist in the form.
  $this->drupalGet('admin/config/regional/language/detection/url');
  // The language-negotiation form should be found.
  $this->assertSession()
    ->pageTextContains('Path prefix configuration');
  // The English override should not be found.
  $this->assertSession()
    ->fieldValueNotEquals('prefix[en]', $overridden_value_en);
  // Now check the Spanish version of the page for the same thing.
  $this->drupalGet($overridden_value_es . '/admin/config/regional/language/detection/url');
  // The language-negotiation form should be found.
  $this->assertSession()
    ->pageTextContains('Path prefix configuration');
  // The Spanish override should not be found.
  $this->assertSession()
    ->fieldValueNotEquals('prefix[es]', $overridden_value_es);
}

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