View source
<?php
namespace Drupal\Tests\feeds\Functional\Plugin\Field\FieldFormatter;
class FeedsItemUrlFormatterTest extends FeedsItemFormatterTestBase {
public function testFeedsItemUrlFormatter($input, $expected) {
$this->container
->get('entity_display.repository')
->getViewDisplay('node', 'article', 'default')
->setComponent('feeds_item', [
'type' => 'feeds_item_url',
'settings' => [
'url_plain' => FALSE,
],
'weight' => 1,
])
->save();
$feed = $this
->createCsvFeed();
$article = $this
->createNodeWithFeedsItem($feed);
$article->feeds_item->url = $input;
$display = $this->container
->get('entity_display.repository')
->getViewDisplay($article
->getEntityTypeId(), $article
->bundle(), 'default');
$content = $display
->build($article);
$rendered_content = $this->container
->get('renderer')
->renderRoot($content);
if ($expected) {
$this
->assertStringContainsString($expected, (string) $rendered_content);
}
else {
$this
->assertFeedsItemFieldNotDisplayed($rendered_content, $input);
}
}
public function providerUrls() {
return [
'empty url' => [
'',
NULL,
],
'http url' => [
'http://en.wikipedia.org/wiki/Star_Control',
'<div><a href="http://en.wikipedia.org/wiki/Star_Control">http://en.wikipedia.org/wiki/Star_Control</a></div>',
],
'https url' => [
'https://en.wikipedia.org/wiki/Star_Control_II',
'<div><a href="https://en.wikipedia.org/wiki/Star_Control_II">https://en.wikipedia.org/wiki/Star_Control_II</a></div>',
],
'non http or https html url' => [
'<strong>SkyNet activated</strong>',
NULL,
],
];
}
public function testOutputUrlAsPlainText() {
$input = 'https://en.wikipedia.org/wiki/Star_Control_3';
$expected = '<div>https://en.wikipedia.org/wiki/Star_Control_3</div>';
$this->container
->get('entity_display.repository')
->getViewDisplay('node', 'article', 'default')
->setComponent('feeds_item', [
'type' => 'feeds_item_url',
'settings' => [
'url_plain' => TRUE,
],
'weight' => 1,
])
->save();
$feed = $this
->createCsvFeed();
$article = $this
->createNodeWithFeedsItem($feed);
$article->feeds_item->url = $input;
$display = $this->container
->get('entity_display.repository')
->getViewDisplay($article
->getEntityTypeId(), $article
->bundle(), 'default');
$content = $display
->build($article);
$rendered_content = $this->container
->get('renderer')
->renderRoot($content);
$this
->assertStringContainsString($expected, (string) $rendered_content);
}
}