function PageRenderTest::assertPageRenderHookExceptions in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Common/PageRenderTest.php \Drupal\system\Tests\Common\PageRenderTest::assertPageRenderHookExceptions()
Asserts whether expected exceptions are thrown for invalid hook implementations.
Parameters
string $module: The module whose invalid logic in its hooks to enable.
string $hook: The page render hook to assert expected exceptions for.
2 calls to PageRenderTest::assertPageRenderHookExceptions()
- PageRenderTest::testHookPageAlter in core/
modules/ system/ src/ Tests/ Common/ PageRenderTest.php - Tests hook_page_attachments_alter() exceptions.
- PageRenderTest::testHookPageAttachmentsExceptions in core/
modules/ system/ src/ Tests/ Common/ PageRenderTest.php - Tests hook_page_attachments() exceptions.
File
- core/
modules/ system/ src/ Tests/ Common/ PageRenderTest.php, line 49 - Contains \Drupal\system\Tests\Common\PageRenderTest.
Class
- PageRenderTest
- Test page rendering hooks.
Namespace
Drupal\system\Tests\CommonCode
function assertPageRenderHookExceptions($module, $hook) {
$html_renderer = \Drupal::getContainer()
->get('main_content_renderer.html');
// Assert a valid hook implementation doesn't trigger an exception.
$page = [];
$html_renderer
->invokePageAttachmentHooks($page);
// Assert that hooks can set cache tags.
$this
->assertEqual($page['#cache']['tags'], [
'example',
]);
$this
->assertEqual($page['#cache']['contexts'], [
'user.permissions',
]);
// Assert an invalid hook implementation doesn't trigger an exception.
\Drupal::state()
->set($module . '.' . $hook . '.descendant_attached', TRUE);
$assertion = $hook . '() implementation that sets #attached on a descendant triggers an exception';
$page = [];
try {
$html_renderer
->invokePageAttachmentHooks($page);
$this
->error($assertion);
} catch (\LogicException $e) {
$this
->pass($assertion);
$this
->assertEqual($e
->getMessage(), 'Only #attached and #cache may be set in ' . $hook . '().');
}
\Drupal::state()
->set('bc_test.' . $hook . '.descendant_attached', FALSE);
// Assert an invalid hook implementation doesn't trigger an exception.
\Drupal::state()
->set('bc_test.' . $hook . '.render_array', TRUE);
$assertion = $hook . '() implementation that sets a child render array triggers an exception';
$page = [];
try {
$html_renderer
->invokePageAttachmentHooks($page);
$this
->error($assertion);
} catch (\LogicException $e) {
$this
->pass($assertion);
$this
->assertEqual($e
->getMessage(), 'Only #attached and #cache may be set in ' . $hook . '().');
}
\Drupal::state()
->set($module . '.' . $hook . '.render_array', FALSE);
}