You are here

public function FileFieldDisplayTest::testDescriptionDefaultFileFieldDisplay in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/file/tests/src/Functional/FileFieldDisplayTest.php \Drupal\Tests\file\Functional\FileFieldDisplayTest::testDescriptionDefaultFileFieldDisplay()
  2. 10 core/modules/file/tests/src/Functional/FileFieldDisplayTest.php \Drupal\Tests\file\Functional\FileFieldDisplayTest::testDescriptionDefaultFileFieldDisplay()

Tests description display of File Field.

File

core/modules/file/tests/src/Functional/FileFieldDisplayTest.php, line 199

Class

FileFieldDisplayTest
Tests the display of file fields in node and views.

Namespace

Drupal\Tests\file\Functional

Code

public function testDescriptionDefaultFileFieldDisplay() {
  $field_name = strtolower($this
    ->randomMachineName());
  $type_name = 'article';
  $field_storage_settings = [
    'display_field' => '1',
    'display_default' => '1',
    'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
  ];
  $field_settings = [
    'description_field' => '1',
  ];
  $widget_settings = [];
  $this
    ->createFileField($field_name, 'node', $type_name, $field_storage_settings, $field_settings, $widget_settings);
  $test_file = $this
    ->getTestFile('text');

  // Create a new node with the uploaded file.
  $nid = $this
    ->uploadNodeFile($test_file, $field_name, $type_name);

  // Add file description.
  $description = 'This is the test file description';
  $this
    ->drupalGet("node/{$nid}/edit");
  $this
    ->submitForm([
    $field_name . '[0][description]' => $description,
  ], 'Save');

  // Load uncached node.
  \Drupal::entityTypeManager()
    ->getStorage('node')
    ->resetCache([
    $nid,
  ]);
  $node = Node::load($nid);

  // Test default formatter.
  $this
    ->drupalGet('node/' . $nid);
  $this
    ->assertSession()
    ->elementTextContains('xpath', '//a[@href="' . $node->{$field_name}->entity
    ->createFileUrl() . '"]', $description);

  // Change formatter to "Table of files".
  $display = \Drupal::entityTypeManager()
    ->getStorage('entity_view_display')
    ->load('node.' . $type_name . '.default');
  $display
    ->setComponent($field_name, [
    'label' => 'hidden',
    'type' => 'file_table',
  ])
    ->save();
  $this
    ->drupalGet('node/' . $nid);
  $this
    ->assertSession()
    ->elementTextContains('xpath', '//a[@href="' . $node->{$field_name}->entity
    ->createFileUrl() . '"]', $description);
}