You are here

public function AggregatorRenderingTest::testFeedPage in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/aggregator/src/Tests/AggregatorRenderingTest.php \Drupal\aggregator\Tests\AggregatorRenderingTest::testFeedPage()

Creates a feed and checks that feed's page.

File

core/modules/aggregator/src/Tests/AggregatorRenderingTest.php, line 95
Contains \Drupal\aggregator\Tests\AggregatorRenderingTest.

Class

AggregatorRenderingTest
Tests display of aggregator items on the page.

Namespace

Drupal\aggregator\Tests

Code

public function testFeedPage() {

  // Increase the number of items published in the rss.xml feed so we have
  // enough articles to test paging.
  $view = entity_load('view', 'frontpage');
  $display =& $view
    ->getDisplay('feed_1');
  $display['display_options']['pager']['options']['items_per_page'] = 30;
  $view
    ->save();

  // Create a feed with 30 items.
  $this
    ->createSampleNodes(30);
  $feed = $this
    ->createFeed();
  $this
    ->updateFeedItems($feed, 30);

  // Check for presence of an aggregator pager.
  $this
    ->drupalGet('aggregator');
  $elements = $this
    ->xpath("//ul[contains(@class, :class)]", array(
    ':class' => 'pager__items',
  ));
  $this
    ->assertTrue(!empty($elements), 'Individual source page contains a pager.');

  // Check for sources page title.
  $this
    ->drupalGet('aggregator/sources');
  $titles = $this
    ->xpath('//h1[normalize-space(text())=:title]', array(
    ':title' => 'Sources',
  ));
  $this
    ->assertTrue(!empty($titles), 'Source page contains correct title.');

  // Find the expected read_more link on the sources page.
  $href = $feed
    ->url();
  $links = $this
    ->xpath('//a[@href = :href]', array(
    ':href' => $href,
  ));
  $this
    ->assertTrue(isset($links[0]), SafeMarkup::format('Link to href %href found.', array(
    '%href' => $href,
  )));
  $cache_tags_header = $this
    ->drupalGetHeader('X-Drupal-Cache-Tags');
  $cache_tags = explode(' ', $cache_tags_header);
  $this
    ->assertTrue(in_array('aggregator_feed:' . $feed
    ->id(), $cache_tags));

  // Check the rss aggregator page as anonymous user.
  $this
    ->drupalLogout();
  $this
    ->drupalGet('aggregator/rss');
  $this
    ->assertResponse(403);

  // Check the rss aggregator page as admin.
  $this
    ->drupalLogin($this->adminUser);
  $this
    ->drupalGet('aggregator/rss');
  $this
    ->assertResponse(200);
  $this
    ->assertEqual($this
    ->drupalGetHeader('Content-type'), 'application/rss+xml; charset=utf-8');

  // Check the opml aggregator page.
  $this
    ->drupalGet('aggregator/opml');
  $outline = $this
    ->xpath('//outline[1]');
  $this
    ->assertEqual($outline[0]['type'], 'rss', 'The correct type attribute is used for rss OPML.');
  $this
    ->assertEqual($outline[0]['text'], $feed
    ->label(), 'The correct text attribute is used for rss OPML.');
  $this
    ->assertEqual($outline[0]['xmlurl'], $feed
    ->getUrl(), 'The correct xmlUrl attribute is used for rss OPML.');

  // Check for the presence of a pager.
  $this
    ->drupalGet('aggregator/sources/' . $feed
    ->id());
  $elements = $this
    ->xpath("//ul[contains(@class, :class)]", array(
    ':class' => 'pager__items',
  ));
  $this
    ->assertTrue(!empty($elements), 'Individual source page contains a pager.');
  $cache_tags = explode(' ', $this
    ->drupalGetHeader('X-Drupal-Cache-Tags'));
  $this
    ->assertTrue(in_array('aggregator_feed:' . $feed
    ->id(), $cache_tags));
  $this
    ->assertTrue(in_array('aggregator_feed_view', $cache_tags));
  $this
    ->assertTrue(in_array('aggregator_item_view', $cache_tags));
}