You are here

public function FieldEntityTest::testGetEntity in Drupal 8

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. 10 core/modules/views/tests/src/Functional/Entity/FieldEntityTest.php \Drupal\Tests\views\Functional\Entity\FieldEntityTest::testGetEntity()

Tests the getEntity method.

File

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

Class

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

Namespace

Drupal\Tests\views\Functional\Entity

Code

public function testGetEntity() {

  // 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
    ->assertEqual($entity
    ->id(), $comment
    ->id(), 'Make sure the right comment entity got loaded.');

  // Tests entities as relationship on first level.
  $entity = $view->field['nid']
    ->getEntity($row);
  $this
    ->assertEqual($entity
    ->id(), $node
    ->id(), 'Make sure the right node entity got loaded.');

  // Tests entities as relationships on second level.
  $entity = $view->field['uid']
    ->getEntity($row);
  $this
    ->assertEqual($entity
    ->id(), $account
    ->id(), 'Make sure the right user entity got loaded.');
}