function EntityDisplayModeTest::testAlphabeticalDisplaySettings

Same name and namespace in other branches
  1. 8.9.x core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php \Drupal\Tests\field_ui\Functional\EntityDisplayModeTest::testAlphabeticalDisplaySettings()
  2. 10 core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php \Drupal\Tests\field_ui\Functional\EntityDisplayModeTest::testAlphabeticalDisplaySettings()
  3. 11.x core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php \Drupal\Tests\field_ui\Functional\EntityDisplayModeTest::testAlphabeticalDisplaySettings()

Tests if view modes appear in alphabetical order by visible name.

The machine name should not be used for sorting.

See also

https://www.drupal.org/node/2858569

File

core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php, line 161

Class

EntityDisplayModeTest
Tests the entity display modes UI.

Namespace

Drupal\Tests\field_ui\Functional

Code

public function testAlphabeticalDisplaySettings() {
    $this->drupalLogin($this->drupalCreateUser([
        'access administration pages',
        'administer content types',
        'administer display modes',
        'administer nodes',
        'administer node fields',
        'administer node display',
        'administer node form display',
        'view the administration theme',
    ]));
    $this->drupalGet('admin/structure/types/manage/article/display');
    // Verify that the order of view modes is alphabetical by visible label.
    // Since the default view modes all have machine names which coincide with
    // the English labels, they should appear in alphabetical order, by default
    // if viewing the site in English and if no changes have been made. We will
    // verify this first.
    $page_text = $this->getTextContent();
    $start = strpos($page_text, 'view modes');
    $pos = $start;
    $list = [
        'Full content',
        'RSS',
        'Search index',
        'Search result',
        'Teaser',
    ];
    // Verify that the order of the view modes is correct on the page.
    foreach ($list as $name) {
        $new_pos = strpos($page_text, $name, $start);
        $this->assertGreaterThan($pos, $new_pos);
        $pos = $new_pos;
    }
    // Now that we have verified the original display order, we can change the
    // label for one of the view modes. If we rename "Teaser" to "Breezer", it
    // should appear as the first of the listed view modes:
    // Set new values and enable test plugins.
    $edit = [
        'label' => 'Breezer',
    ];
    $this->drupalGet('admin/structure/display-modes/view/manage/node.teaser');
    $this->submitForm($edit, 'Save');
    $this->assertSession()
        ->pageTextContains('Saved the Breezer view mode.');
    // Re-open the display settings for the article content type and verify
    // that changing "Teaser" to "Breezer" makes it appear before "Full
    // content".
    $this->drupalGet('admin/structure/types/manage/article/display');
    $page_text = $this->getTextContent();
    $start = strpos($page_text, 'view modes');
    $pos = $start;
    $list = [
        'Breezer',
        'Full content',
    ];
    // Verify that the order of the view modes is correct on the page.
    foreach ($list as $name) {
        $new_pos = strpos($page_text, $name, $start);
        $this->assertGreaterThan($pos, $new_pos);
        $pos = $new_pos;
    }
}

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