function EntityDisplayModeTest::testAlphabeticalDisplaySettings

Same name and namespace in other branches
  1. 9 core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php \Drupal\Tests\field_ui\Functional\EntityDisplayModeTest::testAlphabeticalDisplaySettings()
  2. 8.9.x 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 165

Class

EntityDisplayModeTest
Tests the entity display modes UI.

Namespace

Drupal\Tests\field_ui\Functional

Code

public function testAlphabeticalDisplaySettings() : void {
  $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 "Breezier", it
  // should appear as the first of the listed view modes:
  // Set new values and enable test plugins.
  $edit = [
    'label' => 'Breezier',
  ];
  $this->drupalGet('admin/structure/display-modes/view/manage/node.teaser');
  $this->submitForm($edit, 'Save');
  $this->assertSession()
    ->pageTextContains('Saved the Breezier view mode.');
  // Re-open the display settings for the article content type and verify
  // that changing "Teaser" to "Breezier" 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 = [
    'Breezier',
    '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.