You are here

public function FeedsItemTargetLabelFormatterTest::testFeedsItemTargetLabelFormatterLink in Feeds 8.3

Tests the feeds target label formatter as a link.

@covers \Drupal\feeds\Plugin\Field\FieldFormatter\FeedsItemTargetLabelFormatter::viewElements

File

tests/src/Functional/Plugin/Field/FieldFormatter/FeedsItemTargetLabelFormatterTest.php, line 61

Class

FeedsItemTargetLabelFormatterTest
Tests feeds_item_target_id field formatter.

Namespace

Drupal\Tests\feeds\Functional\Plugin\Field\FieldFormatter

Code

public function testFeedsItemTargetLabelFormatterLink() {

  /** @var \Drupal\Core\Render\RendererInterface $renderer */
  $renderer = $this->container
    ->get('renderer');

  // Set display mode for feeds_item to feeds_item_target_label on article
  // content type.
  $display = $this->container
    ->get('entity_display.repository')
    ->getViewDisplay('node', 'article', 'default')
    ->setComponent('feeds_item', [
    'type' => 'feeds_item_target_label',
    'settings' => [
      'link' => TRUE,
    ],
    'weight' => 1,
  ])
    ->save();
  $feed = $this
    ->createCsvFeed();
  $feed = $this
    ->addFieldToFeed($feed);
  $expected = [
    '#type' => 'link',
    '#title' => $feed
      ->label(),
    '#url' => $feed
      ->toUrl(),
    '#options' => $feed
      ->toUrl()
      ->getOptions(),
    '#cache' => [
      'contexts' => [
        'user.permissions',
      ],
      'tags' => $feed
        ->getCacheTags(),
    ],
  ];

  // Create an article with a reference to the feed.
  $article = $this
    ->createNodeWithFeedsItem($feed);

  // Display the article and test we are getting correct output for label.
  $display = $this->container
    ->get('entity_display.repository')
    ->getViewDisplay($article
    ->getEntityTypeId(), $article
    ->bundle(), 'default');
  $content = $display
    ->build($article);
  $rendered_content = $renderer
    ->renderRoot($content);
  $this
    ->htmlOutput($rendered_content);
  $this
    ->assertStringContainsString('<div>' . (string) $renderer
    ->renderRoot($expected), (string) $rendered_content);
}