EntityViewControllerTest.php in Zircon Profile 8
File
core/modules/system/src/Tests/Entity/EntityViewControllerTest.php
View source
<?php
namespace Drupal\system\Tests\Entity;
use Drupal\simpletest\WebTestBase;
class EntityViewControllerTest extends WebTestBase {
public static $modules = array(
'entity_test',
);
protected $entities = array();
protected function setUp() {
parent::setUp();
for ($i = 0; $i < 2; $i++) {
$entity_test = $this
->createTestEntity('entity_test');
$entity_test
->save();
$this->entities[] = $entity_test;
}
$this
->drupalLogin($this
->drupalCreateUser([
'view test entity',
]));
}
function testEntityViewController() {
$get_label_markup = function ($label) {
return '<h1 class="page-title">
<div class="field field--name-name field--type-string field--label-hidden field__item">' . $label . '</div>
</h1>';
};
foreach ($this->entities as $entity) {
$this
->drupalGet('entity_test/' . $entity
->id());
$this
->assertRaw($entity
->label());
$this
->assertRaw($get_label_markup($entity
->label()));
$this
->assertRaw('full');
$this
->drupalGet('entity_test_converter/' . $entity
->id());
$this
->assertRaw($entity
->label());
$this
->assertRaw('full');
$this
->drupalGet('entity_test_no_view_mode/' . $entity
->id());
$this
->assertRaw($entity
->label());
$this
->assertRaw('full');
}
$this
->drupalGet('entity_test/invalid');
$this
->assertResponse(404);
}
public function testFieldItemAttributes() {
entity_get_display('entity_test', 'entity_test', 'default')
->setComponent('field_test_text', array(
'type' => 'text_default',
))
->save();
$test_value = $this
->randomMachineName();
$entity = entity_create('entity_test');
$entity->field_test_text = $test_value;
$entity
->save();
$this
->drupalGet('entity_test/' . $entity
->id());
$xpath = $this
->xpath('//div[@data-field-item-attr="foobar"]/p[text()=:value]', array(
':value' => $test_value,
));
$this
->assertTrue($xpath, 'The field item attribute has been found in the rendered output of the field.');
\Drupal::service('module_installer')
->install(array(
'rdf',
));
$this
->resetAll();
$mapping = rdf_get_mapping('entity_test', 'entity_test');
$mapping
->setFieldMapping('field_test_text', array(
'properties' => array(
'schema:text',
),
))
->save();
$this
->drupalGet('entity_test/' . $entity
->id());
$xpath = $this
->xpath('//div[@data-field-item-attr="foobar" and @property="schema:text"]/p[text()=:value]', array(
':value' => $test_value,
));
$this
->assertTrue($xpath, 'The field item attributes from both modules have been found in the rendered output of the field.');
}
public function testEntityViewControllerViewBuilder() {
$entity_test = $this
->createTestEntity('entity_test_view_builder');
$entity_test
->save();
$this
->drupalGet('entity_test_view_builder/' . $entity_test
->id());
$this
->assertText($entity_test
->label());
}
protected function createTestEntity($entity_type) {
$data = array(
'bundle' => $entity_type,
'name' => $this
->randomMachineName(),
);
return $this->container
->get('entity.manager')
->getStorage($entity_type)
->create($data);
}
}