Security update for Core, with self-updated composer
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Form / FormHelperTest.php
1 <?php
2
3 namespace Drupal\Tests\Core\Form;
4
5 use Drupal\Core\Form\FormHelper;
6 use Drupal\Tests\UnitTestCase;
7
8 /**
9  * @coversDefaultClass \Drupal\Core\Form\FormHelper
10  * @group Form
11  */
12 class FormHelperTest extends UnitTestCase {
13
14   /**
15    * Tests rewriting the #states selectors.
16    *
17    * @covers ::rewriteStatesSelector
18    */
19   public function testRewriteStatesSelector() {
20
21     // Simple selectors.
22     $value = ['value' => 'medium'];
23     $form['foo']['#states'] = [
24       'visible' => [
25         'select[name="fields[foo-id][settings_edit_form][settings][image_style]"]' => $value,
26       ],
27     ];
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.');
31
32     // Complex selectors.
33     $form = [];
34     $form['bar']['#states'] = [
35       'visible' => [
36         [
37           ':input[name="menu[type]"]' => ['value' => 'normal'],
38         ],
39         [
40           ':input[name="menu[type]"]' => ['value' => 'tab'],
41         ],
42         ':input[name="menu[type]"]' => ['value' => 'default tab'],
43       ],
44       // Example from https://www.drupal.org/node/1464758
45       'disabled' => [
46         '[name="menu[options][dependee_1]"]' => ['value' => 'ON'],
47         [
48           ['[name="menu[options][dependee_2]"]' => ['value' => 'ON']],
49           ['[name="menu[options][dependee_3]"]' => ['value' => 'ON']],
50         ],
51         [
52           ['[name="menu[options][dependee_4]"]' => ['value' => 'ON']],
53           'xor',
54           ['[name="menu[options][dependee_5]"]' => ['value' => 'ON']],
55         ],
56       ],
57     ];
58     $expected['bar']['#states'] = [
59       'visible' => [
60         [
61           ':input[name="options[type]"]' => ['value' => 'normal'],
62         ],
63         [
64           ':input[name="options[type]"]' => ['value' => 'tab'],
65         ],
66         ':input[name="options[type]"]' => ['value' => 'default tab'],
67       ],
68       'disabled' => [
69         '[name="options[options][dependee_1]"]' => ['value' => 'ON'],
70         [
71           ['[name="options[options][dependee_2]"]' => ['value' => 'ON']],
72           ['[name="options[options][dependee_3]"]' => ['value' => 'ON']],
73         ],
74         [
75           ['[name="options[options][dependee_4]"]' => ['value' => 'ON']],
76           'xor',
77           ['[name="options[options][dependee_5]"]' => ['value' => 'ON']],
78         ],
79       ],
80     ];
81     FormHelper::rewriteStatesSelector($form, 'menu', 'options');
82     $this->assertSame($expected, $form, 'The #states selectors were properly rewritten.');
83   }
84
85 }