function OptionsFieldUITest::testDefaultValueOptions

Same name and namespace in other branches
  1. 10 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 88

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()
    ->waitForElement('css', '[name="default_value_input[field_test_int_list]"] option:contains("first")');
  $page->pressButton('Add another item');
  $assert_session->waitForField('field_storage[subform][settings][allowed_values][table][1][item][label]');
  $field_input = $page->find('css', '[name="field_storage[subform][settings][allowed_values][table][1][item][label]"]');
  $field_input->setValue('second');
  $this->assertNotNull($assert_session->waitForElement('css', '[name="default_value_input[field_test_string_list]"] option:contains("second")'));
  $assert_session->optionExists('default_value_input[field_test_string_list]', 'second');
  $page->selectFieldOption('default_value_input[field_test_string_list]', 'second');
  $page->find('css', '.ui-dialog-buttonset button:contains("Save")')
    ->press();
  $this->assertTrue($assert_session->waitForText('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();
  $page->findField('set_default_value')
    ->setValue(TRUE);
  $page->selectFieldOption('default_value_input[field_test_int_list]', 'first');
  // Assert that no validation is performed.
  $assert_session->statusMessageNotContains('Value field is required.');
  $field_input = $page->find('css', '[name="field_storage[subform][settings][allowed_values][table][0][item][key]"]');
  $field_input->setValue(1);
  $this->assertSession()
    ->assertWaitOnAjaxRequest();
  $page->checkField('set_default_value');
  $this->assertSession()
    ->waitForElement('css', '[name="default_value_input[field_test_int_list]"] option:contains("first")');
  // 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->find('css', '.ui-dialog-buttonset button:contains("Save")')
    ->press();
  $this->assertTrue($this->assertSession()
    ->waitForText('Saved Test int list configuration.'));
}

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