function ResponsiveImageFieldDisplayTest::assertResponsiveImageFieldFormattersLink

Same name and namespace in other branches
  1. 9 core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php \Drupal\Tests\responsive_image\Functional\ResponsiveImageFieldDisplayTest::assertResponsiveImageFieldFormattersLink()
  2. 8.9.x core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php \Drupal\Tests\responsive_image\Functional\ResponsiveImageFieldDisplayTest::assertResponsiveImageFieldFormattersLink()
  3. 11.x core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php \Drupal\Tests\responsive_image\Functional\ResponsiveImageFieldDisplayTest::assertResponsiveImageFieldFormattersLink()

Tests responsive image formatters linked to the file or node.

Parameters

string $link_type: The link type to test. Either 'file' or 'content'.

2 calls to ResponsiveImageFieldDisplayTest::assertResponsiveImageFieldFormattersLink()
ResponsiveImageFieldDisplayTest::testResponsiveImageFieldFormattersLinkToFile in core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php
Tests responsive image formatters on node display linked to the file.
ResponsiveImageFieldDisplayTest::testResponsiveImageFieldFormattersLinkToNode in core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php
Tests responsive image formatters on node display linked to the node.

File

core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php, line 518

Class

ResponsiveImageFieldDisplayTest
Tests responsive image display formatter.

Namespace

Drupal\Tests\responsive_image\Functional

Code

private function assertResponsiveImageFieldFormattersLink(string $link_type) : void {
  $field_name = $this->randomMachineName();
  $field_settings = [
    'alt_field_required' => 0,
  ];
  $this->createImageField($field_name, 'node', 'article', [
    'uri_scheme' => 'public',
  ], $field_settings);
  // Create a new node with an image attached.
  $test_image = current($this->getTestFiles('image'));
  /** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository */
  $display_repository = \Drupal::service('entity_display.repository');
  // Test the image linked to file formatter.
  $display_options = [
    'type' => 'responsive_image',
    'settings' => [
      'image_link' => $link_type,
      'responsive_image_style' => 'style_one',
    ],
  ];
  $display_repository->getViewDisplay('node', 'article')
    ->setComponent($field_name, $display_options)
    ->save();
  // Ensure that preview works.
  $this->previewNodeImage($test_image, $field_name, 'article');
  // Look for a picture tag in the preview output
  $this->assertSession()
    ->responseMatches('/picture/');
  $nid = $this->uploadNodeImage($test_image, $field_name, 'article');
  $this->container
    ->get('entity_type.manager')
    ->getStorage('node')
    ->resetCache([
    $nid,
  ]);
  $node = Node::load($nid);
  // Use the responsive image formatter linked to file formatter.
  $display_options = [
    'type' => 'responsive_image',
    'settings' => [
      'image_link' => $link_type,
      'responsive_image_style' => 'style_one',
    ],
  ];
  $display_repository->getViewDisplay('node', 'article')
    ->setComponent($field_name, $display_options)
    ->save();
  // Create a derivative so at least one MIME type will be known.
  $large_style = ImageStyle::load('large');
  $image_uri = File::load($node->{$field_name}->target_id)
    ->getFileUri();
  $large_style->createDerivative($image_uri, $large_style->buildUri($image_uri));
  // Output should contain all image styles and all breakpoints.
  $this->drupalGet('node/' . $nid);
  switch ($link_type) {
    case 'file':
      // Make sure the link to the file is present.
      $this->assertSession()
        ->responseMatches('/<a(.*?)href="' . preg_quote($this->fileUrlGenerator
        ->generateString($image_uri), '/') . '"(.*?)>\\s*<picture/');
      break;

    case 'content':
      // Make sure the link to the node is present.
      $this->assertSession()
        ->responseMatches('/<a(.*?)href="' . preg_quote($node->toUrl()
        ->toString(), '/') . '"(.*?)>\\s*<picture/');
      break;

  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.