Index: modules/aggregator/aggregator.test =================================================================== RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.test,v retrieving revision 1.5 diff -u -r1.5 aggregator.test --- modules/aggregator/aggregator.test 3 Aug 2008 18:16:51 -0000 1.5 +++ modules/aggregator/aggregator.test 16 Aug 2008 14:24:50 -0000 @@ -522,3 +522,143 @@ $this->submitImportForm(); } } + +class FeedParserTestCase extends AggregatorTestCase { + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => t('Feed parser tests'), + 'description' => t("Test Aggregator's built-in feed parser with valid feed samples."), + 'group' => t('Aggregator'), + ); + } + + function testFeedParser() { + $this->_testAtomEntryLinkSample(); + } + + function addUpdateFeed($edit) { + $this->drupalGet($edit['url']); + $this->assertResponse(array(200), t('URL !url is accessible', array('!url' => $edit['url']))); + + $this->drupalPost('admin/content/aggregator/add/feed', $edit, t('Save')); + $this->assertRaw(t('The feed %name has been added.', array('%name' => $edit['title'])), t('The feed !name has been added.', array('!name' => $edit['title']))); + + $feed = db_fetch_object(db_query("SELECT * FROM {aggregator_feed} WHERE url = '%s'", $edit['url'])); + $this->drupalGet('admin/content/aggregator/update/' . $feed->fid); + + $this->drupalPost('admin/content/aggregator/remove/' . $feed->fid, array(), t('Remove items')); + $this->assertRaw(t('The news items from %title have been removed.', array('%title' => $feed->title)), t('Feed items removed.')); + + $this->drupalGet('admin/content/aggregator/update/' . $feed->fid); + + // Get updated feed information from database. + $feed = db_fetch_object(db_query("SELECT * FROM {aggregator_feed} WHERE fid = %d", $feed->fid)); + return $feed; + } + + function _testAtomEntryLinkSample() { + $edit = array( + 'title' => "Thingology (LibraryThing's ideas blog)", + 'url' => file_create_url($this->getAtomEntryLinkSample()), + ); + $feed = $this->addUpdateFeed($edit); + + $result = db_query('SELECT * FROM {aggregator_item} WHERE fid = %d', $feed->fid); + $items = array(); + while ($item = db_fetch_object($result)) { + $items[] = $item; + } + $this->assertEqual($items[0]->link, 'http://www.librarything.com/thingology/2008/08/lamination.php', t('Link !link', array('!link' => $items[0]->link))); + $this->assertEqual($items[1]->link, 'http://www.librarything.com/thingology/2008/08/more-on-covers.php', t('Link !link', array('!link' => $items[1]->link))); + $this->assertEqual($items[2]->link, 'http://www.librarything.com/thingology/2008/08/index-translationum.php', t('Link !link', array('!link' => $items[2]->link))); + } + + /** + * Sample Atom formatted feed. + * + * @see http://drupal.org/node/130344 + */ + function getAtomEntryLinkSample() { + $feed = << + + tag:blogger.com,1999:blog-27965824 + 2008-08-15T13:18:44.515-04:00 + Thingology (LibraryThing's ideas blog) + + + + + + Tim + http://www.blogger.com/profile/07986361763198309178 + noreply@blogger.com + + Blogger + 239 + 1 + 25 + + tag:blogger.com,1999:blog-27965824.post-5704465642340301949 + 2008-08-13T04:55:00.003-04:00 + 2008-08-13T05:13:11.626-04:00 + Lamination... + I love the + + + + + + + Tim + http://www.blogger.com/profile/07986361763198309178 + noreply@blogger.com + + + + tag:blogger.com,1999:blog-27965824.post-1142034655881418621 + 2008-08-12T12:51:00.003-04:00 + 2008-08-13T06:04:43.803-04:00 + + + More on covers + Three quick updates + + + + + + + Tim + http://www.blogger.com/profile/07986361763198309178 + noreply@blogger.com + + + + tag:blogger.com,1999:blog-27965824.post-7879150915857504362 + 2008-08-12T10:49:00.002-04:00 + 2008-08-12T11:22:09.742-04:00 + Index Translationum + Anirvan + + + + + + + Tim + http://www.blogger.com/profile/07986361763198309178 + noreply@blogger.com + + + +EOF; + + $path = file_directory_path() . '/atom-entry-link.xml'; + file_save_data($feed, $path); + return $path; + } +}