only in patch2: unchanged: --- /dev/null +++ b/core/modules/file/tests/modules/file_test_states/file_test_states.info.yml @@ -0,0 +1,8 @@ +name: 'File test states' +type: module +description: 'Provides a simple form with file fields using states.' +package: Testing +version: VERSION +core: 8.x +dependencies: + - file only in patch2: unchanged: --- /dev/null +++ b/core/modules/file/tests/modules/file_test_states/file_test_states.routing.yml @@ -0,0 +1,7 @@ +example.form: + path: '/file-test-states-form' + defaults: + _title: 'File test states form' + _form: '\Drupal\file_test_states\Form\FileTestStatesForm' + requirements: + _access: 'TRUE' only in patch2: unchanged: --- /dev/null +++ b/core/modules/file/tests/modules/file_test_states/src/Form/FileTestStatesForm.php @@ -0,0 +1,55 @@ + 'checkbox', + '#title' => $this->t('Toggle fields'), + ]; + $form['managed_file_initially_visible'] = [ + '#type' => 'managed_file', + '#title' => t('Managed File Initially Visible'), + '#states' => [ + 'visible' => [':input[name="toggle"]' => ['checked' => FALSE]], + ], + ]; + $form['managed_file_initially_hidden'] = [ + '#type' => 'managed_file', + '#title' => t('Managed File Initially Hidden'), + '#states' => [ + 'visible' => [':input[name="toggle"]' => ['checked' => TRUE]], + ], + ]; + return $form; + } + + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, FormStateInterface $form_state) {} + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) {} + +} only in patch2: unchanged: --- /dev/null +++ b/core/modules/file/tests/src/FunctionalJavascript/FileManagedStateTest.php @@ -0,0 +1,60 @@ +drupalLogin($this->drupalCreateUser()); + $this->drupalGet('file-test-states-form'); + + // Wait until the page has fully loaded including the ajax load of the + // managed files. + $this->assertSession()->assertWaitOnAjaxRequest(); + $page = $this->getSession()->getPage(); + + // Now get the fields from the page. + $field_initially_visible = $page->findField('files[managed_file_initially_visible]'); + $field_initially_hidden = $page->findField('files[managed_file_initially_hidden]'); + + // Check that the initially visible managed file is visible. + $this->assertTrue($field_initially_visible->isVisible()); + + // Check that the initially hidden managed file is hidden. + $this->assertFalse($field_initially_hidden->isVisible()); + + // Toggle the fields. + $page->findField('toggle')->click(); + + // Check that the initially visible managed file is now hidden. + $this->assertFalse($field_initially_visible->isVisible()); + + // Check that the initially hidden managed file is now visible. + $this->assertTrue($field_initially_hidden->isVisible()); + } + +}