You are here

function EditorFileReferenceFilterTest::testEditorFileReferenceFilter in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php \Drupal\editor\Tests\EditorFileReferenceFilterTest::testEditorFileReferenceFilter()

Tests the editor file reference filter.

File

core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php, line 50
Contains \Drupal\editor\Tests\EditorFileReferenceFilterTest.

Class

EditorFileReferenceFilterTest
Tests Editor module's file reference filter.

Namespace

Drupal\editor\Tests

Code

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 = entity_create('file', array(
    'uri' => 'public://llama.jpg',
  ));
  $image
    ->save();
  $id = $image
    ->id();
  $uuid = $image
    ->uuid();
  $cache_tag = [
    'file:' . $id,
  ];
  file_put_contents('public://alpaca.jpg', $this
    ->randomMachineName());
  $image_2 = entity_create('file', array(
    'uri' => 'public://alpaca.jpg',
  ));
  $image_2
    ->save();
  $id_2 = $image_2
    ->id();
  $uuid_2 = $image_2
    ->uuid();
  $cache_tag_2 = [
    'file:' . $id_2,
  ];
  $this
    ->pass('No data-entity-type and no data-entity-uuid attribute.');
  $input = '<img src="llama.jpg" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->pass('A non-file data-entity-type attribute value.');
  $input = '<img src="llama.jpg" data-entity-type="invalid-entity-type-value" data-entity-uuid="' . $uuid . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->pass('One data-entity-uuid attribute.');
  $input = '<img src="llama.jpg" data-entity-type="file" data-entity-uuid="' . $uuid . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->assertEqual($cache_tag, $output
    ->getCacheTags());
  $this
    ->pass('One data-entity-uuid attribute with odd capitalization.');
  $input = '<img src="llama.jpg" data-entity-type="file" DATA-entity-UUID =   "' . $uuid . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->assertEqual($cache_tag, $output
    ->getCacheTags());
  $this
    ->pass('One data-entity-uuid attribute on a non-image tag.');
  $input = '<video src="llama.jpg" data-entity-type="file" data-entity-uuid="' . $uuid . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->assertEqual($cache_tag, $output
    ->getCacheTags());
  $this
    ->pass('One data-entity-uuid attribute with an invalid value.');
  $input = '<img src="llama.jpg" data-entity-type="file" data-entity-uuid="invalid-' . $uuid . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->assertEqual(array(), $output
    ->getCacheTags());
  $this
    ->pass('Two different data-entity-uuid attributes.');
  $input = '<img src="llama.jpg" data-entity-type="file" data-entity-uuid="' . $uuid . '" />';
  $input .= '<img src="alpaca.jpg" data-entity-type="file" data-entity-uuid="' . $uuid_2 . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->assertEqual(Cache::mergeTags($cache_tag, $cache_tag_2), $output
    ->getCacheTags());
  $this
    ->pass('Two identical  data-entity-uuid attributes.');
  $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 . '" />';
  $output = $test($input);
  $this
    ->assertIdentical($input, $output
    ->getProcessedText());
  $this
    ->assertEqual($cache_tag, $output
    ->getCacheTags());
}