EntityViewHookTest.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace Drupal\KernelTests\Core\Entity;
  3. use Drupal\entity_test\Entity\EntityTest;
  4. /**
  5. * Test view/render hooks for entities.
  6. *
  7. * @todo Add tests for the following hooks. https://www.drupal.org/node/2755353
  8. * hook_entity_view_display_alter()
  9. * hook_entity_prepare_view()
  10. * hook_ENTITY_TYPE_view()
  11. * hook_entity_view()
  12. * hook_ENTITY_TYPE_view_alter()
  13. * hook_entity_view_alter()
  14. *
  15. * @group Entity
  16. */
  17. class EntityViewHookTest extends EntityKernelTestBase {
  18. /**
  19. * Test hook_entity_display_build_alter().
  20. */
  21. public function testHookEntityDisplayBuildAlter() {
  22. entity_test_create_bundle('display_build_alter_bundle');
  23. /** @var \Drupal\Core\Render\RendererInterface $renderer */
  24. $renderer = $this->container->get('renderer');
  25. $entity_ids = [];
  26. // Create some entities to test.
  27. for ($i = 0; $i < 5; $i++) {
  28. $entity = EntityTest::create([
  29. 'name' => $this->randomMachineName(),
  30. 'type' => 'display_build_alter_bundle',
  31. ]);
  32. $entity->save();
  33. $entity_ids[] = $entity->id();
  34. }
  35. /** @var \Drupal\entity_test\EntityTestViewBuilder $view_builder */
  36. $view_builder = $this->container->get('entity_type.manager')->getViewBuilder('entity_test');
  37. /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
  38. $storage = $this->container->get('entity_type.manager')->getStorage('entity_test');
  39. $storage->resetCache();
  40. $entities = $storage->loadMultiple($entity_ids);
  41. $build = $view_builder->viewMultiple($entities);
  42. $output = $renderer->renderRoot($build);
  43. $this->setRawContent($output->__toString());
  44. // Confirm that the content added in
  45. // entity_test_entity_display_build_alter() appears multiple times, not
  46. // just for the final entity.
  47. foreach ($entity_ids as $id) {
  48. $this->assertText('Content added in hook_entity_display_build_alter for entity id ' . $id);
  49. }
  50. }
  51. }