public function ElementsTest::testProcessSelectOrOther in Select (or other) 8
Same name and namespace in other branches
- 8.3 Tests/src/Unit/ElementsTest.php \Drupal\Tests\select_or_other\Unit\ElementsTest::testProcessSelectOrOther()
- 4.x tests/src/Unit/ElementsTest.php \Drupal\Tests\select_or_other\Unit\ElementsTest::testProcessSelectOrOther()
Tests the processing of a select or other element.
File
- tests/
src/ Unit/ ElementsTest.php, line 96
Class
- ElementsTest
- Tests the form element implementation.
Namespace
Drupal\Tests\select_or_other\UnitCode
public function testProcessSelectOrOther() {
// Test ElementBase.
// Make the protected method accessible and invoke it.
$method = new ReflectionMethod('Drupal\\select_or_other\\Element\\ElementBase', 'addOtherOption');
$method
->setAccessible(TRUE);
$form_state = new FormState();
$form = [];
$element = [
'#name' => 'select_or_other',
'#no_empty_option' => FALSE,
'#default_value' => 'default',
'#required' => TRUE,
'#multiple' => FALSE,
'#options' => [
'first_option' => 'First option',
'second_option' => "Second option",
],
];
$expected_element = $element + [
'select' => [
'#default_value' => $element['#default_value'],
'#required' => $element['#required'],
'#multiple' => $element['#multiple'],
'#options' => $method
->invoke(NULL, $element['#options']),
'#attributes' => [
'aria-label' => isset($element['#title']) ? $element['#title'] : $element['#name'],
],
'#weight' => 10,
],
'other' => [
'#type' => 'textfield',
'#attributes' => [
'aria-label' => isset($element['#title']) ? $element['#title'] . ' Other' : $element['#name'] . ' Other',
],
'#weight' => 20,
'#attributes' => [
'placeholder' => "Other: please specify here",
],
],
];
$resulting_element = ElementBase::processSelectOrOther($element, $form_state, $form);
$this
->assertArrayEquals($expected_element, $resulting_element);
$this
->assertArrayEquals($resulting_element, $element);
}