NodeRssCacheTest.php
Same filename in other branches
Namespace
Drupal\Tests\node\FunctionalFile
-
core/
modules/ node/ tests/ src/ Functional/ NodeRssCacheTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\node\Functional;
use Drupal\filter\Entity\FilterFormat;
use Drupal\views\Tests\ViewTestData;
/**
* Ensures that RSS render cache doesn't interfere with other caches.
*
* Create a node, render that node as a teaser in the RSS feed, ensure that
* the RSS teaser render doesn't contain tags from the default theme.
*
* @group node
*/
class NodeRssCacheTest extends NodeTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'node_test',
'views',
'node_test_views',
];
/**
* {@inheritdoc}
*/
public static $testViews = [
'test_node_article_feed',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
ViewTestData::createTestViews(static::class, [
'node_test_views',
]);
// Use bypass node access permission here, because the test class uses
// hook_grants_alter() to deny access to everyone on node_access
// queries.
$user = $this->drupalCreateUser([
'bypass node access',
'access content',
'create article content',
]);
$this->drupalLogin($user);
}
/**
* Ensure the RSS teaser render does not interfere with default theme cache.
*/
public function testNodeRssCacheContent() : void {
// Only the plain_text text format is available by default, which escapes
// all HTML.
FilterFormat::create([
'format' => 'full_html',
'name' => 'Full HTML',
'filters' => [],
])->save();
// Create the test node.
$node = $this->drupalCreateNode([
'type' => 'article',
'promote' => 1,
'title' => 'Article Test Title',
'body' => [
'value' => '<p>Article test text.</p>',
'format' => 'full_html',
],
]);
// Render the node in the RSS feed view as a teaser.
$this->drupalGet('test-node-article-feed');
// Render the teaser normally.
$viewBuilder = $this->container
->get('entity_type.manager')
->getViewBuilder('node');
$build = $viewBuilder->view($node, 'teaser');
$output = $this->container
->get('renderer')
->renderInIsolation($build);
// Teaser must contain an "<article" tag from the stable9 theme.
$this->assertStringContainsString('<article', (string) $output);
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
NodeRssCacheTest | Ensures that RSS render cache doesn't interfere with other caches. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.