annotate core/tests/Drupal/KernelTests/ConfigFormTestBase.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children a9cd425dd02b
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\KernelTests;
Chris@0 4
Chris@0 5 use Drupal\Core\Form\FormState;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * Full generic test suite for any form that data with the configuration system.
Chris@0 9 *
Chris@0 10 * @see UserAdminSettingsFormTest
Chris@0 11 * For a full working implementation.
Chris@0 12 */
Chris@0 13 abstract class ConfigFormTestBase extends KernelTestBase {
Chris@0 14 /**
Chris@0 15 * Form ID to use for testing.
Chris@0 16 *
Chris@0 17 * @var \Drupal\Core\Form\FormInterface.
Chris@0 18 */
Chris@0 19 protected $form;
Chris@0 20
Chris@0 21 /**
Chris@0 22 * Values to use for testing.
Chris@0 23 *
Chris@0 24 * Contains details for form key, configuration object name, and config key.
Chris@0 25 * Example:
Chris@0 26 * @code
Chris@0 27 * array(
Chris@0 28 * 'user_mail_cancel_confirm_body' => array(
Chris@0 29 * '#value' => $this->randomString(),
Chris@0 30 * '#config_name' => 'user.mail',
Chris@0 31 * '#config_key' => 'cancel_confirm.body',
Chris@0 32 * ),
Chris@0 33 * );
Chris@0 34 * @endcode
Chris@0 35 *
Chris@0 36 * @var array
Chris@0 37 */
Chris@0 38 protected $values;
Chris@0 39
Chris@0 40 /**
Chris@0 41 * Submit the system_config_form ensure the configuration has expected values.
Chris@0 42 */
Chris@0 43 public function testConfigForm() {
Chris@0 44 // Programmatically submit the given values.
Chris@0 45 $values = [];
Chris@0 46 foreach ($this->values as $form_key => $data) {
Chris@0 47 $values[$form_key] = $data['#value'];
Chris@0 48 }
Chris@0 49 $form_state = (new FormState())->setValues($values);
Chris@0 50 \Drupal::formBuilder()->submitForm($this->form, $form_state);
Chris@0 51
Chris@0 52 // Check that the form returns an error when expected, and vice versa.
Chris@0 53 $errors = $form_state->getErrors();
Chris@0 54 $valid_form = empty($errors);
Chris@0 55 $args = [
Chris@0 56 '%values' => print_r($values, TRUE),
Chris@0 57 '%errors' => $valid_form ? t('None') : implode(' ', $errors),
Chris@0 58 ];
Chris@0 59 $this->assertTrue($valid_form, format_string('Input values: %values<br/>Validation handler errors: %errors', $args));
Chris@0 60
Chris@0 61 foreach ($this->values as $data) {
Chris@0 62 $this->assertEqual($data['#value'], $this->config($data['#config_name'])->get($data['#config_key']));
Chris@0 63 }
Chris@0 64 }
Chris@0 65
Chris@0 66 }