LanguageNegotiationFormOverrideTest.php

Same filename in other branches
  1. 9 core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php
  2. 10 core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php
  3. 11.x core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php

Namespace

Drupal\Tests\config\Functional

File

core/modules/config/tests/src/Functional/LanguageNegotiationFormOverrideTest.php

View source
<?php

namespace Drupal\Tests\config\Functional;

use Drupal\Tests\BrowserTestBase;

/**
 * Tests language-negotiation overrides are not on language-negotiation form.
 *
 * @group config
 * @see \Drupal\Core\Form\ConfigFormBase
 */
class LanguageNegotiationFormOverrideTest extends BrowserTestBase {
    public static $modules = [
        'language',
        'locale',
        'locale_test',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * Tests that overrides do not affect language-negotiation form values.
     */
    public function testFormWithOverride() {
        $this->drupalLogin($this->rootUser);
        $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->drupalPostForm('admin/config/regional/language/add', $edit, t('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->assertText('Path prefix configuration', 'Language-negotiation form found for English.');
        // The English override should not be found.
        $this->assertNoFieldByName('prefix[en]', $overridden_value_en, 'Language-negotiation config override not found in English.');
        // 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->assertText('Path prefix configuration', 'Language-negotiation form found for Spanish using the overridden prefix.');
        // The Spanish override should not be found.
        $this->assertNoFieldByName('prefix[es]', $overridden_value_es, 'Language-negotiation config override not found in Spanish.');
    }

}

Classes

Title Deprecated Summary
LanguageNegotiationFormOverrideTest Tests language-negotiation overrides are not on language-negotiation form.

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