You are here

public function EditorFileReferenceFilterTest::testEditorFileReferenceFilter in CDN 8.3

Tests the editor file reference filter.

Verifies that it works as expected when CDN integration is enabled, but also when it is disabled: this ensures that we know whether core breaks.

See also

\Drupal\Tests\editor\Kernel\EditorFileReferenceFilterTest::testEditorFileReferenceFilter()

File

tests/src/Kernel/EditorFileReferenceFilterTest.php, line 77

Class

EditorFileReferenceFilterTest
Tests the CDN module's Editor module's file reference filter.

Namespace

Drupal\Tests\cdn\Kernel

Code

public function testEditorFileReferenceFilter() {
  $filter = $this->filters['editor_file_reference'];
  $test = function ($input) use ($filter) {
    return $filter
      ->process($input, 'und');
  };
  file_put_contents('public://llama.jpg', $this
    ->randomMachineName());
  $image = File::create([
    'uri' => 'public://llama.jpg',
  ]);
  $image
    ->save();
  $uuid = $image
    ->uuid();
  file_put_contents('public://llama.mp4', $this
    ->randomMachineName());
  $video = File::create([
    'uri' => 'public://llama.mp4',
  ]);
  $video
    ->save();
  $this
    ->assertTrue(TRUE, 'Simple case: <img>.');
  $input = '<img src="llama.jpg" data-entity-type="file" data-entity-uuid="' . $uuid . '" />';
  $expected_output = '<img src="/' . $this->siteDirectory . '/files/llama.jpg" data-entity-type="file" data-entity-uuid="' . $image
    ->uuid() . '" />';
  $output = $test($input);
  $this
    ->assertSame($expected_output, $output
    ->getProcessedText());
  $this
    ->enableCdn();
  $expected_output = '<img src="//cdn-a.com/' . $this->siteDirectory . '/files/llama.jpg" data-entity-type="file" data-entity-uuid="' . $image
    ->uuid() . '" />';
  $output = $test($input);
  $this
    ->assertSame($expected_output, $output
    ->getProcessedText());
  $this
    ->disableCdn();
  $this
    ->assertTrue(TRUE, 'Two identical <img> cases, must result in identical CDN file URLs.');
  $input = '<img src="llama.jpg" data-entity-type="file" data-entity-uuid="' . $uuid . '" />';
  $input .= '<img src="llama.jpg" data-entity-type="file" data-entity-uuid="' . $uuid . '" />';
  $expected_output = '<img src="/' . $this->siteDirectory . '/files/llama.jpg" data-entity-type="file" data-entity-uuid="' . $image
    ->uuid() . '" />';
  $expected_output .= '<img src="/' . $this->siteDirectory . '/files/llama.jpg" data-entity-type="file" data-entity-uuid="' . $image
    ->uuid() . '" />';
  $output = $test($input);
  $this
    ->assertSame($expected_output, $output
    ->getProcessedText());
  $this
    ->enableCdn();
  $expected_output = '<img src="//cdn-a.com/' . $this->siteDirectory . '/files/llama.jpg" data-entity-type="file" data-entity-uuid="' . $image
    ->uuid() . '" />';
  $expected_output .= '<img src="//cdn-a.com/' . $this->siteDirectory . '/files/llama.jpg" data-entity-type="file" data-entity-uuid="' . $image
    ->uuid() . '" />';
  $output = $test($input);
  $this
    ->assertSame($expected_output, $output
    ->getProcessedText());
  $this
    ->disableCdn();
  $this
    ->assertTrue(TRUE, 'Simple case: <video>.');
  $input = '<video src="llama.mp4" data-entity-type="file" data-entity-uuid="' . $video
    ->uuid() . '" poster="llama.jpg" />';
  $expected_output = '<video src="/' . $this->siteDirectory . '/files/llama.mp4" data-entity-type="file" data-entity-uuid="' . $video
    ->uuid() . '" poster="llama.jpg"></video>';
  $output = $test($input);
  $this
    ->assertSame($expected_output, $output
    ->getProcessedText());
  $this
    ->enableCdn();
  $expected_output = '<video src="//cdn-a.com/' . $this->siteDirectory . '/files/llama.mp4" data-entity-type="file" data-entity-uuid="' . $video
    ->uuid() . '" poster="llama.jpg"></video>';
  $output = $test($input);
  $this
    ->assertSame($expected_output, $output
    ->getProcessedText());
  $this
    ->disableCdn();
}