function FieldCustomTest::testFieldCustomTokens

Same name in other branches
  1. 9 core/modules/views/tests/src/Kernel/Handler/FieldCustomTest.php \Drupal\Tests\views\Kernel\Handler\FieldCustomTest::testFieldCustomTokens()
  2. 8.9.x core/modules/views/tests/src/Kernel/Handler/FieldCustomTest.php \Drupal\Tests\views\Kernel\Handler\FieldCustomTest::testFieldCustomTokens()
  3. 11.x core/modules/views/tests/src/Kernel/Handler/FieldCustomTest.php \Drupal\Tests\views\Kernel\Handler\FieldCustomTest::testFieldCustomTokens()

Ensure that custom fields can use tokens.

File

core/modules/views/tests/src/Kernel/Handler/FieldCustomTest.php, line 63

Class

FieldCustomTest
Tests the core Drupal\views\Plugin\views\field\Custom handler.

Namespace

Drupal\Tests\views\Kernel\Handler

Code

public function testFieldCustomTokens() : void {
    $view = Views::getView('test_view');
    $view->setDisplay();
    $view->displayHandlers
        ->get('default')
        ->overrideOption('fields', [
        'age' => [
            'id' => 'age',
            'exclude' => TRUE,
            'table' => 'views_test_data',
            'field' => 'age',
        ],
        'name' => [
            'id' => 'name',
            'table' => 'views_test_data',
            'field' => 'name',
            'relationship' => 'none',
            'alter' => [
                'text' => 'Amount of kittens: {{ age }}',
            ],
        ],
    ]);
    
    /** @var \Drupal\Core\Render\RendererInterface $renderer */
    $renderer = \Drupal::service('renderer');
    $preview = $view->preview();
    $output = $renderer->renderRoot($preview);
    $expected_text = 'Amount of kittens: ' . $view->style_plugin
        ->getField(0, 'age');
    $this->assertStringContainsString($expected_text, (string) $output, 'The views token has been successfully replaced.');
}

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