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\KernelCode
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();
}