You are here

public function FieldPluginBaseTest::testRenderAsLinkWithPathAndTokens in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php \Drupal\Tests\views\Unit\Plugin\field\FieldPluginBaseTest::testRenderAsLinkWithPathAndTokens()

Test rendering of a link with a path and options.

@dataProvider providerTestRenderAsLinkWithPathAndTokens @covers ::renderAsLink

File

core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php, line 537
Contains \Drupal\Tests\views\Unit\Plugin\field\FieldPluginBaseTest.

Class

FieldPluginBaseTest
@coversDefaultClass \Drupal\views\Plugin\views\field\FieldPluginBase @group views

Namespace

Drupal\Tests\views\Unit\Plugin\field

Code

public function testRenderAsLinkWithPathAndTokens($path, $tokens, $link_html) {
  $alter = [
    'make_link' => TRUE,
    'path' => $path,
  ];
  $this
    ->setUpUrlIntegrationServices();
  $this
    ->setupDisplayWithEmptyArgumentsAndFields();
  $this->executable->build_info['substitutions'] = $tokens;
  $field = $this
    ->setupTestField([
    'alter' => $alter,
  ]);
  $field->field_alias = 'key';
  $row = new ResultRow([
    'key' => 'value',
  ]);
  $build = [
    '#type' => 'inline_template',
    '#template' => 'test-path/' . explode('/', $path)[1],
    '#context' => [
      'foo' => 123,
    ],
    '#post_render' => [
      function () {
      },
    ],
  ];
  $this->renderer
    ->expects($this
    ->once())
    ->method('renderPlain')
    ->with($build)
    ->willReturn('base:test-path/123');
  $result = $field
    ->advancedRender($row);
  $this
    ->assertEquals($link_html, $result);
}