function OptionsFieldUITest::testDefaultValueOptions

Same name and namespace in other branches
  1. 11.x core/modules/options/tests/src/FunctionalJavascript/OptionsFieldUITest.php \Drupal\Tests\options\FunctionalJavascript\OptionsFieldUITest::testDefaultValueOptions()

Tests that the allowed options are available to the default value widget.

File

core/modules/options/tests/src/FunctionalJavascript/OptionsFieldUITest.php, line 86

Class

OptionsFieldUITest
Tests the Options field UI functionality.

Namespace

Drupal\Tests\options\FunctionalJavascript

Code

public function testDefaultValueOptions() : void {
  $page = $this->getSession()
    ->getPage();
  $assert_session = $this->assertSession();
  $bundle_path = 'admin/structure/types/manage/' . $this->type;
  // Create a field of type list:string.
  $this->fieldUIAddNewFieldJS($bundle_path, 'test_string_list', 'Test string list', 'list_string', FALSE);
  $page->findField('field_storage[subform][settings][allowed_values][table][0][item][label]')
    ->setValue('first');
  $assert_session->assertWaitOnAjaxRequest();
  $page->findField('set_default_value')
    ->setValue(TRUE);
  // Assert that the option added in the subform is available to the default
  // value field.
  $this->assertSession()
    ->optionExists('default_value_input[field_test_string_list]', 'first');
  $page->pressButton('Add another item');
  $this->assertNotNull($assert_session->waitForElement('css', "[name='field_storage[subform][settings][allowed_values][table][1][item][label]']"));
  $page->findField('field_storage[subform][settings][allowed_values][table][1][item][label]')
    ->setValue('second');
  $assert_session->assertWaitOnAjaxRequest();
  $assert_session->optionExists('default_value_input[field_test_string_list]', 'second');
  $page->selectFieldOption('default_value_input[field_test_string_list]', 'second');
  $page->pressButton('Save settings');
  $assert_session->pageTextContains('Saved Test string list configuration.');
  // Create a field of type list:integer.
  $this->fieldUIAddNewFieldJS($bundle_path, 'test_int_list', 'Test int list', 'list_integer', FALSE);
  $page->findField('field_storage[subform][settings][allowed_values][table][0][item][label]')
    ->setValue('first');
  $assert_session->assertWaitOnAjaxRequest();
  // Assert that no validation is performed.
  $assert_session->statusMessageNotContains('Value field is required.');
  $page->findField('field_storage[subform][settings][allowed_values][table][0][item][key]')
    ->setValue(1);
  $assert_session->assertWaitOnAjaxRequest();
  $page->findField('set_default_value')
    ->setValue(TRUE);
  // Assert that the option added in the subform is available to the default
  // value field.
  $this->assertSession()
    ->optionExists('default_value_input[field_test_int_list]', 'first');
  $page->selectFieldOption('default_value_input[field_test_int_list]', 'first');
  $page->pressButton('Save settings');
  $assert_session->pageTextContains('Saved Test int list configuration.');
}

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