function FieldEntityTest::testGetEntity

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Functional/Entity/FieldEntityTest.php \Drupal\Tests\views\Functional\Entity\FieldEntityTest::testGetEntity()
  2. 8.9.x core/modules/views/tests/src/Functional/Entity/FieldEntityTest.php \Drupal\Tests\views\Functional\Entity\FieldEntityTest::testGetEntity()
  3. 11.x core/modules/views/tests/src/Functional/Entity/FieldEntityTest.php \Drupal\Tests\views\Functional\Entity\FieldEntityTest::testGetEntity()
  4. 11.x core/modules/views/tests/src/Kernel/Entity/FieldEntityTest.php \Drupal\Tests\views\Kernel\Entity\FieldEntityTest::testGetEntity()

Tests the getEntity method.

File

core/modules/views/tests/src/Functional/Entity/FieldEntityTest.php, line 89

Class

FieldEntityTest
Tests the field plugin base integration with the entity system.

Namespace

Drupal\Tests\views\Functional\Entity

Code

public function testGetEntity() : void {
  // The view is a view of comments, their nodes and their authors, so there
  // are three layers of entities.
  $account = User::create([
    'name' => $this->randomMachineName(),
    'bundle' => 'user',
  ]);
  $account->save();
  $node = Node::create([
    'uid' => $account->id(),
    'type' => 'page',
    'title' => $this->randomString(),
  ]);
  $node->save();
  $comment = Comment::create([
    'uid' => $account->id(),
    'entity_id' => $node->id(),
    'entity_type' => 'node',
    'field_name' => 'comment',
  ]);
  $comment->save();
  $user = $this->drupalCreateUser([
    'access comments',
  ]);
  $this->drupalLogin($user);
  $view = Views::getView('test_field_get_entity');
  $this->executeView($view);
  $row = $view->result[0];
  // Tests entities on the base level.
  $entity = $view->field['cid']
    ->getEntity($row);
  $this->assertEquals($comment->id(), $entity->id(), 'Make sure the right comment entity got loaded.');
  // Tests entities as relationship on first level.
  $entity = $view->field['nid']
    ->getEntity($row);
  $this->assertEquals($node->id(), $entity->id(), 'Make sure the right node entity got loaded.');
  // Tests entities as relationships on second level.
  $entity = $view->field['uid']
    ->getEntity($row);
  $this->assertEquals($account->id(), $entity->id(), 'Make sure the right user entity got loaded.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.