3 namespace Drupal\Tests\Core\Form;
5 use Drupal\Core\Form\FormHelper;
6 use Drupal\Tests\UnitTestCase;
9 * @coversDefaultClass \Drupal\Core\Form\FormHelper
12 class FormHelperTest extends UnitTestCase {
15 * Tests rewriting the #states selectors.
17 * @covers ::rewriteStatesSelector
19 public function testRewriteStatesSelector() {
22 $value = ['value' => 'medium'];
23 $form['foo']['#states'] = [
25 'select[name="fields[foo-id][settings_edit_form][settings][image_style]"]' => $value,
28 FormHelper::rewriteStatesSelector($form, 'fields[foo-id][settings_edit_form]', 'options');
29 $expected_selector = 'select[name="options[settings][image_style]"]';
30 $this->assertSame($form['foo']['#states']['visible'][$expected_selector], $value, 'The #states selector was not properly rewritten.');
34 $form['bar']['#states'] = [
37 ':input[name="menu[type]"]' => ['value' => 'normal'],
40 ':input[name="menu[type]"]' => ['value' => 'tab'],
42 ':input[name="menu[type]"]' => ['value' => 'default tab'],
44 // Example from https://www.drupal.org/node/1464758
46 '[name="menu[options][dependee_1]"]' => ['value' => 'ON'],
48 ['[name="menu[options][dependee_2]"]' => ['value' => 'ON']],
49 ['[name="menu[options][dependee_3]"]' => ['value' => 'ON']],
52 ['[name="menu[options][dependee_4]"]' => ['value' => 'ON']],
54 ['[name="menu[options][dependee_5]"]' => ['value' => 'ON']],
58 $expected['bar']['#states'] = [
61 ':input[name="options[type]"]' => ['value' => 'normal'],
64 ':input[name="options[type]"]' => ['value' => 'tab'],
66 ':input[name="options[type]"]' => ['value' => 'default tab'],
69 '[name="options[options][dependee_1]"]' => ['value' => 'ON'],
71 ['[name="options[options][dependee_2]"]' => ['value' => 'ON']],
72 ['[name="options[options][dependee_3]"]' => ['value' => 'ON']],
75 ['[name="options[options][dependee_4]"]' => ['value' => 'ON']],
77 ['[name="options[options][dependee_5]"]' => ['value' => 'ON']],
81 FormHelper::rewriteStatesSelector($form, 'menu', 'options');
82 $this->assertSame($expected, $form, 'The #states selectors were properly rewritten.');