function DevelDumperTest::testDumpersOutput

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

Test variable is dumped in page.

File

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

Class

DevelDumperTest
Tests pluggable dumper feature.

Namespace

Drupal\Tests\devel\Functional

Code

public function testDumpersOutput() : void {
    $edit = [
        'dumper' => 'available_test_dumper',
    ];
    $this->drupalGet('admin/config/development/devel');
    $this->submitForm($edit, 'Save configuration');
    $this->assertSession()
        ->pageTextContains('The configuration options have been saved.');
    $this->drupalGet('devel_dumper_test/dump');
    $elements = $this->xpath('//body/pre[contains(text(), :message)]', [
        ':message' => 'AvailableTestDumper::dump() Test output',
    ]);
    $this->assertNotEmpty($elements, 'Dumped message #1 is present.');
    $this->drupalGet('devel_dumper_test/message');
    $elements = $this->xpath('//div[@aria-label="Status message"]/pre[contains(text(), :message)]', [
        ':message' => 'AvailableTestDumper::export() Test output',
    ]);
    $this->assertNotEmpty($elements, 'Dumped message #2 is present.');
    $this->drupalGet('devel_dumper_test/export');
    $elements = $this->xpath('//div[@class="layout-content"]//pre[contains(text(), :message)]', [
        ':message' => 'AvailableTestDumper::export() Test output',
    ]);
    $this->assertNotEmpty($elements, 'Dumped message #3 is present.');
    $this->drupalGet('devel_dumper_test/export_renderable');
    $elements = $this->xpath('//div[@class="layout-content"]//pre[contains(text(), :message)]', [
        ':message' => 'AvailableTestDumper::exportAsRenderable() Test output',
    ]);
    $this->assertNotEmpty($elements, 'Dumped message #4 is present.');
    // Ensures that plugins can add libraries to the page when the
    // ::exportAsRenderable() method is used.
    $this->assertSession()
        ->responseContains('devel_dumper_test/css/devel_dumper_test.css');
    $this->assertSession()
        ->responseContains('devel_dumper_test/js/devel_dumper_test.js');
    $debug_filename = \Drupal::service('file_system')->getTempDirectory() . '/' . 'drupal_debug.txt';
    $this->drupalGet('devel_dumper_test/debug');
    $file_content = file_get_contents($debug_filename);
    $expected = <<<EOF
<pre>AvailableTestDumper::export() Test output</pre>

EOF;
    $this->assertEquals($file_content, $expected, 'Dumped message #5 is present.');
    // Ensures that the DevelDumperManager::debug() is not access checked and
    // that the dump is written in the debug file even if the user has not the
    // 'access devel information' permission.
    file_put_contents($debug_filename, '');
    $this->drupalLogout();
    $this->drupalGet('devel_dumper_test/debug');
    $file_content = file_get_contents($debug_filename);
    $expected = <<<EOF
<pre>AvailableTestDumper::export() Test output</pre>

EOF;
    $this->assertEquals($file_content, $expected, 'Dumped message #6 is present.');
}