You are here

public function DevelDumperTest::testDumpersConfiguration in Devel 8

Same name and namespace in other branches
  1. 8.3 tests/src/Functional/DevelDumperTest.php \Drupal\Tests\devel\Functional\DevelDumperTest::testDumpersConfiguration()
  2. 8.2 tests/src/Functional/DevelDumperTest.php \Drupal\Tests\devel\Functional\DevelDumperTest::testDumpersConfiguration()
  3. 4.x tests/src/Functional/DevelDumperTest.php \Drupal\Tests\devel\Functional\DevelDumperTest::testDumpersConfiguration()

Test dumpers configuration page.

File

tests/src/Functional/DevelDumperTest.php, line 35

Class

DevelDumperTest
Tests pluggable dumper feature.

Namespace

Drupal\Tests\devel\Functional

Code

public function testDumpersConfiguration() {
  $this
    ->drupalGet('admin/config/development/devel');

  // Ensures that the dumper input is present on the config page.
  $this
    ->assertSession()
    ->fieldExists('dumper');

  // Ensures that the 'default' dumper is enabled by default.
  $this
    ->assertSession()
    ->checkboxChecked('edit-dumper-default');

  // Ensures that all dumpers declared by devel are present on the config page
  // and that only the available dumpers are selectable.
  $dumpers = [
    'default',
    'drupal_variable',
    'firephp',
    'chromephp',
    'var_dumper',
  ];
  $available_dumpers = [
    'default',
    'drupal_variable',
    'var_dumper',
  ];
  foreach ($dumpers as $dumper) {
    $this
      ->assertFieldByXPath('//input[@type="radio" and @name="dumper"]', $dumper);
    if (in_array($dumper, $available_dumpers)) {
      $this
        ->assertFieldByXPath('//input[@name="dumper" and not(@disabled="disabled")]', $dumper);
    }
    else {
      $this
        ->assertFieldByXPath('//input[@name="dumper" and @disabled="disabled"]', $dumper);
    }
  }

  // Ensures that dumper plugins declared by other modules are present on the
  // config page and that only the available dumpers are selectable.
  $this
    ->assertFieldByXPath('//input[@name="dumper"]', 'available_test_dumper');
  $this
    ->assertSession()
    ->pageTextContains('Available test dumper.');
  $this
    ->assertSession()
    ->pageTextContains('Drupal dumper for testing purposes (available).');
  $this
    ->assertFieldByXPath('//input[@name="dumper" and not(@disabled="disabled")]', 'available_test_dumper', 'Available dumper input not is disabled.');
  $this
    ->assertFieldByXPath('//input[@name="dumper"]', 'not_available_test_dumper');
  $this
    ->assertSession()
    ->pageTextContains('Not available test dumper.');
  $this
    ->assertSession()
    ->pageTextContains('Drupal dumper for testing purposes (not available).Not available. You may need to install external dependencies for use this plugin.');
  $this
    ->assertFieldByXPath('//input[@name="dumper" and @disabled="disabled"]', 'not_available_test_dumper', 'Non available dumper input is disabled.');

  // Ensures that saving of the dumpers configuration works as expected.
  $edit = [
    'dumper' => 'drupal_variable',
  ];
  $this
    ->drupalPostForm('admin/config/development/devel', $edit, t('Save configuration'));
  $this
    ->assertSession()
    ->pageTextContains(t('The configuration options have been saved.'));
  $config = \Drupal::config('devel.settings')
    ->get('devel_dumper');
  $this
    ->assertEquals('drupal_variable', $config, 'The configuration options have been properly saved');

  // Ensure that if the chosen dumper is not available (e.g. the module that
  // provide it is uninstalled) the 'default' dumper appears selected in the
  // config page.
  \Drupal::service('module_installer')
    ->install([
    'kint',
  ]);
  $this
    ->drupalGet('admin/config/development/devel');
  $this
    ->assertFieldByXPath('//input[@name="dumper"]', 'kint');
  $edit = [
    'dumper' => 'kint',
  ];
  $this
    ->drupalPostForm('admin/config/development/devel', $edit, t('Save configuration'));
  $this
    ->assertSession()
    ->pageTextContains(t('The configuration options have been saved.'));
  $config = \Drupal::config('devel.settings')
    ->get('devel_dumper');
  $this
    ->assertEquals('kint', $config, 'The configuration options have been properly saved');
  \Drupal::service('module_installer')
    ->uninstall([
    'kint',
  ]);
  $this
    ->drupalGet('admin/config/development/devel');
  $this
    ->assertNoFieldByXPath('//input[@name="dumper"]', 'kint');
  $this
    ->assertSession()
    ->checkboxChecked('edit-dumper-default');
}