public function FieldEntityTest::testGetEntity

Tests the get_entity method.

File

drupal/core/modules/views/lib/Drupal/views/Tests/Entity/FieldEntityTest.php, line 42
Definition of Drupal\views\Tests\Entity\FieldEntityTest.

Class

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

Namespace

Drupal\views\Tests\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 = entity_create('user', array(
    'name' => $this
      ->randomName(),
    'bundle' => 'user',
  ));
  $account
    ->save();
  $node = entity_create('node', array(
    'uid' => $account
      ->id(),
    'type' => 'page',
  ));
  $node
    ->save();
  $comment = entity_create('comment', array(
    'uid' => $account
      ->id(),
    'nid' => $node
      ->id(),
    'node_type' => 'comment_node_page',
  ));
  $comment
    ->save();
  $view = views_get_view('test_field_get_entity');
  $this
    ->executeView($view);
  $row = $view->result[0];

  // Tests entities on the base level.
  $entity = $view->field['cid']
    ->get_entity($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']
    ->get_entity($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']
    ->get_entity($row);
  $this
    ->assertEqual($entity
    ->id(), $account
    ->id(), 'Make sure the right user entity got loaded.');
}