public function AggregatorCronTestCase::testCron

Adds feeds and updates them via cron process.

File

drupal/modules/aggregator/aggregator.test, line 874
Tests for aggregator.module.

Class

AggregatorCronTestCase
Tests functionality of the cron process in the Aggregator module.

Code

public function testCron() {

  // Create feed and test basic updating on cron.
  global $base_url;
  $key = variable_get('cron_key', 'drupal');
  $this
    ->createSampleNodes();
  $feed = $this
    ->createFeed();
  $this
    ->drupalGet($base_url . '/cron.php', array(
    'external' => TRUE,
    'query' => array(
      'cron_key' => $key,
    ),
  ));
  $this
    ->assertEqual(5, db_query('SELECT COUNT(*) FROM {aggregator_item} WHERE fid = :fid', array(
    ':fid' => $feed->fid,
  ))
    ->fetchField(), 'Expected number of items in database.');
  $this
    ->removeFeedItems($feed);
  $this
    ->assertEqual(0, db_query('SELECT COUNT(*) FROM {aggregator_item} WHERE fid = :fid', array(
    ':fid' => $feed->fid,
  ))
    ->fetchField(), 'Expected number of items in database.');
  $this
    ->drupalGet($base_url . '/cron.php', array(
    'external' => TRUE,
    'query' => array(
      'cron_key' => $key,
    ),
  ));
  $this
    ->assertEqual(5, db_query('SELECT COUNT(*) FROM {aggregator_item} WHERE fid = :fid', array(
    ':fid' => $feed->fid,
  ))
    ->fetchField(), 'Expected number of items in database.');

  // Test feed locking when queued for update.
  $this
    ->removeFeedItems($feed);
  db_update('aggregator_feed')
    ->condition('fid', $feed->fid)
    ->fields(array(
    'queued' => REQUEST_TIME,
  ))
    ->execute();
  $this
    ->drupalGet($base_url . '/cron.php', array(
    'external' => TRUE,
    'query' => array(
      'cron_key' => $key,
    ),
  ));
  $this
    ->assertEqual(0, db_query('SELECT COUNT(*) FROM {aggregator_item} WHERE fid = :fid', array(
    ':fid' => $feed->fid,
  ))
    ->fetchField(), 'Expected number of items in database.');
  db_update('aggregator_feed')
    ->condition('fid', $feed->fid)
    ->fields(array(
    'queued' => 0,
  ))
    ->execute();
  $this
    ->drupalGet($base_url . '/cron.php', array(
    'external' => TRUE,
    'query' => array(
      'cron_key' => $key,
    ),
  ));
  $this
    ->assertEqual(5, db_query('SELECT COUNT(*) FROM {aggregator_item} WHERE fid = :fid', array(
    ':fid' => $feed->fid,
  ))
    ->fetchField(), 'Expected number of items in database.');
}