function FieldRenderedEntityTest::testRenderedEntityWithoutAndWithField

Same name and namespace in other branches
  1. 10 core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php \Drupal\Tests\views\Kernel\Handler\FieldRenderedEntityTest::testRenderedEntityWithoutAndWithField()

Tests the default rendered entity output.

File

core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php, line 116

Class

FieldRenderedEntityTest
Tests the core <a href="/api/drupal/core%21modules%21views%21src%21Plugin%21views%21field%21RenderedEntity.php/class/RenderedEntity/11.x" title="Provides a field handler which renders an entity in a certain view mode." class="local">Drupal\views\Plugin\views\field\RenderedEntity</a> handler.

Namespace

Drupal\Tests\views\Kernel\Handler

Code

public function testRenderedEntityWithoutAndWithField() : void {
    // First test without test_field displayed.
    \Drupal::currentUser()->setAccount($this->user);
    $display = EntityViewDisplay::load('entity_test.entity_test.foobar');
    $display->removeComponent('test_field')
        ->save();
    $view = Views::getView('test_field_entity_test_rendered');
    $build = [
        '#type' => 'view',
        '#name' => 'test_field_entity_test_rendered',
        '#view' => $view,
        '#display_id' => 'default',
    ];
    $renderer = \Drupal::service('renderer');
    $renderer->renderInIsolation($build);
    for ($i = 1; $i <= 3; $i++) {
        $view_field = (string) $view->style_plugin
            ->getField($i - 1, 'rendered_entity');
        $search_result = str_contains($view_field, "Test {$i}");
        $this->assertFalse($search_result, "The text 'Test {$i}' not found in the view.");
    }
    $this->assertConfigDependencies($view->storage);
    $this->assertCacheabilityMetadata($build);
    // Now show the test_field on the entity_test.entity_test.foobar view
    // display to confirm render is updated correctly.
    $display->setComponent('test_field', [
        'type' => 'string',
        'label' => 'above',
    ])
        ->save();
    // Need to reload the view because the rendered fields are statically cached
    // in the object.
    $view = Views::getView('test_field_entity_test_rendered');
    $build = [
        '#type' => 'view',
        '#name' => 'test_field_entity_test_rendered',
        '#view' => $view,
        '#display_id' => 'default',
    ];
    $renderer->renderInIsolation($build);
    for ($i = 1; $i <= 3; $i++) {
        $view_field = (string) $view->style_plugin
            ->getField($i - 1, 'rendered_entity');
        $search_result = str_contains($view_field, "Test {$i}");
        $this->assertTrue($search_result, "The text 'Test {$i}' found in the view.");
    }
    $this->assertConfigDependencies($view->storage);
    $this->assertCacheabilityMetadata($build);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.