function NodeAccessCacheabilityWithNodeGrants::testAccessCacheabilityWithNodeGrants
Tests node view access cacheability with node grants.
File
- 
              core/
modules/ node/ tests/ src/ Functional/ NodeAccessCacheabilityWithNodeGrants.php, line 34  
Class
- NodeAccessCacheabilityWithNodeGrants
 - Tests node view access cacheability with node grants.
 
Namespace
Drupal\Tests\node\FunctionalCode
public function testAccessCacheabilityWithNodeGrants() : void {
  NodeType::create([
    'type' => 'page',
    'name' => 'Page',
  ])->save();
  $this->createEntityReferenceField('node', 'page', 'ref', 'Ref', 'node');
  EntityViewDisplay::create([
    'targetEntityType' => 'node',
    'bundle' => 'page',
    'mode' => 'default',
    'status' => TRUE,
  ])->setComponent('ref', [
    'type' => 'entity_reference_label',
  ])
    ->save();
  // Check that at least one module implements hook_node_grants() as this test
  // only tests this case.
  // @see \node_test_node_grants()
  $this->assertTrue(\Drupal::moduleHandler()->hasImplementations('node_grants'));
  // Create an unpublished node.
  $referenced = $this->createNode([
    'status' => FALSE,
  ]);
  // Create a node referencing $referenced.
  $node = $this->createNode([
    'ref' => $referenced,
  ]);
  // Check that the referenced entity link doesn't show on the host entity.
  $this->drupalGet($node->toUrl());
  $this->assertSession()
    ->linkNotExists($referenced->label());
  // Publish the referenced node.
  $referenced->setPublished()
    ->save();
  // Check that the referenced entity link shows on the host entity.
  $this->getSession()
    ->reload();
  $this->assertSession()
    ->linkExists($referenced->label());
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.