function ManageFieldsTest::testFilterInReuseForm

Same name and namespace in other branches
  1. 10 core/modules/field_ui/tests/src/FunctionalJavascript/ManageFieldsTest.php \Drupal\Tests\field_ui\FunctionalJavascript\ManageFieldsTest::testFilterInReuseForm()

Tests filter results in the re-use form.

File

core/modules/field_ui/tests/src/FunctionalJavascript/ManageFieldsTest.php, line 90

Class

ManageFieldsTest
Tests the Field UI "Manage Fields" screens.

Namespace

Drupal\Tests\field_ui\FunctionalJavascript

Code

public function testFilterInReuseForm() : void {
  $session = $this->getSession();
  $page = $session->getPage();
  $path = 'admin/structure/types/manage/article';
  $path2 = 'admin/structure/types/manage/page';
  $this->fieldUIAddNewFieldJS($path, 'horse', 'Horse');
  $this->fieldUIAddNewFieldJS($path, 'horseradish', 'Horseradish', 'text');
  $this->fieldUIAddNewFieldJS($path, 'carrot', 'Carrot', 'text');
  $this->drupalGet($path2 . '/fields');
  $this->assertSession()
    ->linkExists('Re-use an existing field');
  $this->clickLink('Re-use an existing field');
  $this->assertSession()
    ->waitForElementVisible('css', '#drupal-modal');
  $filter = $this->assertSession()
    ->waitForElementVisible('css', 'input[name="search"]');
  $horse_field_row = $page->find('css', '.js-reuse-table tr[data-field-id="field_horse"]');
  $horseradish_field_row = $page->find('css', '.js-reuse-table tr[data-field-id="field_horseradish"]');
  $carrot_field_row = $page->find('css', '.js-reuse-table tr[data-field-id="field_carrot"]');
  // Confirm every field is visible first.
  $this->assertTrue($horse_field_row->isVisible());
  $this->assertTrue($horseradish_field_row->isVisible());
  $this->assertTrue($carrot_field_row->isVisible());
  // Filter by 'horse' field name.
  $filter->setValue('horse');
  $session->wait(1000, "jQuery('[data-field-id=\"field_carrot\"]:visible').length == 0");
  $this->assertTrue($horse_field_row->isVisible());
  $this->assertTrue($horseradish_field_row->isVisible());
  $this->assertFalse($carrot_field_row->isVisible());
  // Filter even more so only 'horseradish' is visible.
  $filter->setValue('horserad');
  $session->wait(1000, "jQuery('[data-field-id=\"field_horse\"]:visible').length == 0");
  $this->assertFalse($horse_field_row->isVisible());
  $this->assertTrue($horseradish_field_row->isVisible());
  $this->assertFalse($carrot_field_row->isVisible());
  // Filter by field type but search with 'ext' instead of 'text' to
  // confirm that contains-based search works.
  $filter->setValue('ext');
  $session->wait(1000, "jQuery('[data-field-id=\"field_horse\"]:visible').length == 0");
  $session->wait(1000, "jQuery('[data-field-id=\"field_carrot\"]:visible').length == 1");
  $this->assertFalse($horse_field_row->isVisible());
  $this->assertTrue($horseradish_field_row->isVisible());
  $this->assertTrue($carrot_field_row->isVisible());
  // Ensure clearing brings all the results back.
  $filter->setValue('');
  $session->wait(1000, "jQuery('[data-field-id=\"field_horse\"]:visible').length == 1");
  $this->assertTrue($horse_field_row->isVisible());
  $this->assertTrue($horseradish_field_row->isVisible());
  $this->assertTrue($carrot_field_row->isVisible());
}

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