You are here

public function StringFormatterTest::testStringFormatter in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/field/src/Tests/String/StringFormatterTest.php \Drupal\field\Tests\String\StringFormatterTest::testStringFormatter()

Tests string formatter output.

File

core/modules/field/src/Tests/String/StringFormatterTest.php, line 111
Contains \Drupal\field\Tests\String\StringFormatterTest.

Class

StringFormatterTest
Tests the creation of text fields.

Namespace

Drupal\field\Tests\String

Code

public function testStringFormatter() {
  $value = $this
    ->randomString();
  $value .= "\n\n<strong>" . $this
    ->randomString() . '</strong>';
  $value .= "\n\n" . $this
    ->randomString();
  $entity = EntityTestRev::create(array());
  $entity->{$this->fieldName}->value = $value;

  // Verify that all HTML is escaped and newlines are retained.
  $this
    ->renderEntityFields($entity, $this->display);
  $this
    ->assertNoRaw($value);
  $this
    ->assertRaw(nl2br(Html::escape($value)));

  // Verify the cache tags.
  $build = $entity->{$this->fieldName}
    ->view();
  $this
    ->assertTrue(!isset($build[0]['#cache']), 'The string formatter has no cache tags.');
  $value = $this
    ->randomMachineName();
  $entity->{$this->fieldName}->value = $value;
  $entity
    ->save();

  // Set the formatter to link to the entity.
  $this->display
    ->setComponent($this->fieldName, [
    'type' => 'string',
    'settings' => [
      'link_to_entity' => TRUE,
    ],
  ]);
  $this->display
    ->save();
  $this
    ->renderEntityFields($entity, $this->display);
  $this
    ->assertLink($value, 0);
  $this
    ->assertLinkByHref($entity
    ->url());

  // $entity->url('revision') falls back to the canonical URL if this is no
  // revision.
  $this
    ->assertLinkByHref($entity
    ->url('revision'));

  // Make the entity a new revision.
  $old_revision_id = $entity
    ->getRevisionId();
  $entity
    ->setNewRevision(TRUE);
  $value2 = $this
    ->randomMachineName();
  $entity->{$this->fieldName}->value = $value2;
  $entity
    ->save();
  $entity_new_revision = \Drupal::entityManager()
    ->getStorage('entity_test_rev')
    ->loadRevision($old_revision_id);
  $this
    ->renderEntityFields($entity, $this->display);
  $this
    ->assertLink($value2, 0);
  $this
    ->assertLinkByHref($entity
    ->url('revision'));
  $this
    ->renderEntityFields($entity_new_revision, $this->display);
  $this
    ->assertLink($value, 0);
  $this
    ->assertLinkByHref('/entity_test_rev/' . $entity_new_revision
    ->id() . '/revision/' . $entity_new_revision
    ->getRevisionId() . '/view');
}