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. 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 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.