View source
<?php
namespace Drupal\Tests\entity_print\Kernel;
use Drupal\Core\Entity\Entity\EntityViewDisplay;
use Drupal\Core\Session\AnonymousUserSession;
use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Controller\NodeViewController;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
use Drupal\Tests\node\Traits\NodeCreationTrait;
use Drupal\Tests\user\Traits\UserCreationTrait;
class ExtraFieldsTest extends KernelTestBase {
use NodeCreationTrait;
use UserCreationTrait;
use ContentTypeCreationTrait;
public static $modules = [
'system',
'user',
'node',
'field',
'text',
'datetime',
'entity_print',
'filter',
];
protected $node;
public function setUp() : void {
parent::setUp();
array_map([
$this,
'installEntitySchema',
], [
'user',
'node',
]);
$this
->installConfig([
'system',
'filter',
'node',
]);
$this
->installSchema('system', [
'sequences',
]);
$this
->createContentType([
'type' => 'page',
'display_submitted' => FALSE,
]);
$this->node = $this
->createNode([
'body' => [
[
'value' => 'body text',
],
],
]);
EntityViewDisplay::load('node.page.default')
->setComponent('entity_print_view_pdf', [
'weight' => -2,
])
->setComponent('body', [
'type' => 'text_default',
'weight' => 0,
])
->save();
$account = $this
->createUser([
'access content',
'entity print access type node',
'administer nodes',
]);
$this->container
->get('current_user')
->setAccount($account);
}
public function testExtraFieldAccess() {
$controller = NodeViewController::create($this->container);
$renderer = $this->container
->get('renderer');
$build = $controller
->view($this->node, 'default');
$text = (string) $renderer
->renderPlain($build);
$this
->assertStringContainsString('View PDF', $text);
$this->container
->get('current_user')
->setAccount(new AnonymousUserSession());
$build = $controller
->view($this->node, 'default');
$text = (string) $renderer
->renderPlain($build);
$this
->assertStringNotContainsString('View PDF', $text);
}
public function testExtraFieldWeight() {
$controller = NodeViewController::create($this->container);
$renderer = $this->container
->get('renderer');
$build = $controller
->view($this->node, 'default');
$text = (string) $renderer
->renderPlain($build);
$this
->assertTrue(stripos($text, 'View PDF') < stripos($text, 'body text'), 'View PDF link appears first');
EntityViewDisplay::load('node.page.default')
->setComponent('entity_print_view_pdf', [
'weight' => 10,
])
->save();
$build = $controller
->view($this->node, 'default');
$text = (string) $renderer
->renderPlain($build);
$this
->assertTrue(stripos($text, 'View PDF') > stripos($text, 'body text'), 'View PDF link appears last');
}
}