View source
<?php
namespace Drupal\Tests\entity_print\Kernel;
use Drupal\Core\Entity\Entity\EntityViewDisplay;
use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Controller\NodePreviewController;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;
class NodePreviewTest extends KernelTestBase {
protected $errors = [];
public static $modules = [
'system',
'user',
'entity_print',
'node',
];
protected function setUp() {
parent::setUp();
set_error_handler([
$this,
'errorHandler',
]);
}
public function testNodePreview() {
$this
->installSchema('system', [
'router',
]);
$this
->installConfig([
'system',
'user',
]);
$this
->config('system.theme.global')
->set('features.node_user_picture', FALSE)
->save();
$this
->installEntitySchema('user');
$this
->installEntitySchema('node');
$this->container
->get('router.builder')
->rebuild();
NodeType::create([
'type' => 'whatever',
'name' => 'What?',
])
->save();
$node = Node::create([
'type' => 'whatever',
'title' => 'Buzz',
]);
$node->in_preview = TRUE;
$display = EntityViewDisplay::create([
'targetEntityType' => 'node',
'bundle' => 'whatever',
'mode' => 'default',
'status' => TRUE,
])
->setComponent('entity_print_view');
$display
->save();
$controller = NodePreviewController::create($this->container);
$build = $controller
->view($node);
$renderer = $this->container
->get('renderer');
$renderer
->renderPlain($build);
$this
->assertNotError("array_flip(): Can only flip STRING and INTEGER values!", E_WARNING);
}
protected function assertNotError($errstr, $errno) {
$status = FALSE;
foreach ($this->errors as $error) {
if ($error['errstr'] === $errstr && $error['errno'] === $errno) {
$status = TRUE;
break;
}
}
$this
->assertFalse($status, "Error: '{$errstr}' (level {$errno}) was not triggered.");
}
public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
$this->errors[] = compact('errno', 'errstr', 'errfile', 'errline', 'errcontext');
}
}