diff --git a/lib/Drupal/views/Tests/Entity/FieldEntityTest.php b/lib/Drupal/views/Tests/Entity/FieldEntityTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a950621d46940c0e449d907ce42c250930aebfcf --- /dev/null +++ b/lib/Drupal/views/Tests/Entity/FieldEntityTest.php @@ -0,0 +1,62 @@ +<?php + +/** + * @file + * Definition of Drupal\views\Tests\Entity\FieldEntityTest. + */ + +namespace Drupal\views\Tests\Entity; + +use Drupal\views\Tests\ViewTestBase; + +/** + * Tests the field plugin base integration with the entity system. + */ +class FieldEntityTest extends ViewTestBase { + + + /** + * Modules to enable. + * + * @var array + */ + public static $modules = array('comment'); + + public static function getInfo() { + return array( + 'name' => 'Field: Entity Api Integration', + 'description' => 'Tests the field plugin base integration with the entity system.', + 'group' => 'Views Modules', + ); + } + + /** + * Tests the get_entity method. + */ + 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.'); + } + +} diff --git a/tests/views_test_config/config/views.view.test_field_get_entity.yml b/tests/views_test_config/config/views.view.test_field_get_entity.yml new file mode 100644 index 0000000000000000000000000000000000000000..269b4b23519ada86400745fd6768dd8aeac29845 --- /dev/null +++ b/tests/views_test_config/config/views.view.test_field_get_entity.yml @@ -0,0 +1,63 @@ +api_version: '3.0' +base_table: comment +core: 8.0-dev +description: '' +disabled: '0' +display: + default: + display_options: + access: + type: perm + cache: + type: none + exposed_form: + type: basic + fields: + cid: + field: cid + id: cid + table: comment + nid: + field: nid + id: nid + table: node + relationship: nid + uid: + field: uid + id: uid + table: users + relationship: uid + filter_groups: + groups: { } + operator: AND + filters: { } + pager: + type: full + query: + type: views_query + relationships: + nid: + field: nid + id: nid + required: '1' + table: comment + uid: + admin_label: '' + field: uid + group_type: group + id: uid + label: author + relationship: nid + required: '0' + table: node + row_plugin: fields + sorts: { } + style_plugin: default + display_plugin: default + display_title: Master + id: default + position: '0' +human_name: test_field_get_entity +name: test_field_get_entity +tag: default +