You are here

public function FileDownloadLinkMediaTokenTest::testFormatterClassTokens in File Download Link 8

Test the formatter using tokens.

File

tests/src/Kernel/FileDownloadLinkMediaTokenTest.php, line 111

Class

FileDownloadLinkMediaTokenTest
Class for testing file_download_link_media formatter.

Namespace

Drupal\Tests\file_download_link\Kernel

Code

public function testFormatterClassTokens() {
  $settings = [
    'link_text' => 'Download Media Now!',
    'new_tab' => FALSE,
    'force_download' => FALSE,
    'custom_classes' => 'static-class media-type-[media:bundle:target_id]',
  ];
  $render = $this->node->field_media
    ->view([
    'type' => 'file_download_link_media',
    'label' => 'hidden',
    'settings' => $settings,
  ]);

  // Check that the thing that will get rendered looks right.
  $expected_deep_render = [
    '#type' => 'link',
    '#title' => 'Download Media Now!',
    '#url' => Url::fromUri(file_create_url('public://file.txt')),
    '#options' => [
      'attributes' => [
        'class' => [
          'file-download',
          'file-download-text',
          'file-download-plain',
          'static-class',
          'media-type-test-media',
        ],
      ],
    ],
    '#cache' => [
      'tags' => [
        'file:1',
        'media:1',
      ],
      'contexts' => [],
      'max-age' => -1,
    ],
    '#attached' => [],
  ];
  Assert::assertEquals($expected_deep_render, $render[0][0], json_encode($render));

  // Check that the render array has the right cache data.
  $expected_cache = [
    'contexts' => [
      'user.permissions',
    ],
    'tags' => [
      'media:1',
    ],
    'max-age' => -1,
  ];
  Assert::assertEquals($expected_cache, $render[0]['#cache'], json_encode($render));
}