function MultipleValueWidgetTest::testFieldMultipleValueWidgetRemoveKeepsWeightOrderWhenRowWeightsAreShown

Same name and namespace in other branches
  1. main core/modules/field/tests/src/FunctionalJavascript/MultipleValueWidgetTest.php \Drupal\Tests\field\FunctionalJavascript\MultipleValueWidgetTest::testFieldMultipleValueWidgetRemoveKeepsWeightOrderWhenRowWeightsAreShown()

Tests that removing an item keeps the order set through the weight selects.

File

core/modules/field/tests/src/FunctionalJavascript/MultipleValueWidgetTest.php, line 203

Class

MultipleValueWidgetTest
Tests widget form for a multiple value field.

Namespace

Drupal\Tests\field\FunctionalJavascript

Code

public function testFieldMultipleValueWidgetRemoveKeepsWeightOrderWhenRowWeightsAreShown() : void {
  $this->drupalGet('entity_test/add');
  $assert_session = $this->assertSession();
  $page = $this->getSession()
    ->getPage();
  $add_more_button = $page->findButton('field_unlimited_add_more');
  $page->findField('field_unlimited[0][value]')
    ->setValue('1');
  $add_more_button->click();
  $assert_session->waitForField('field_unlimited[1][value]')
    ->setValue('2');
  $add_more_button->click();
  $assert_session->waitForField('field_unlimited[2][value]')
    ->setValue('3');
  // Switch to the row weight selects and reorder the items to 3, 2, 1.
  $page->pressButton('Show row weights');
  $assert_session->waitForElementVisible('css', 'select[name="field_unlimited[0][_weight]"]');
  $page->selectFieldOption('field_unlimited[0][_weight]', '2');
  $page->selectFieldOption('field_unlimited[1][_weight]', '0');
  $page->selectFieldOption('field_unlimited[2][_weight]', '-2');
  // Remove the middle item ("2", delta 1).
  $page->findButton('field_unlimited_1_remove_button')
    ->click();
  $assert_session->assertWaitOnAjaxRequest();
  $this->assertSame([
    '3',
    '1',
  ], $this->getItemValuesInDomOrder());
  $assert_session->fieldValueEquals('field_unlimited[0][value]', '1');
  $assert_session->fieldValueEquals('field_unlimited[0][_weight]', '0');
  $assert_session->fieldValueEquals('field_unlimited[1][value]', '3');
  $assert_session->fieldValueEquals('field_unlimited[1][_weight]', '-1');
}

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