Index: modules/aggregator/aggregator.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.test,v
retrieving revision 1.31
diff -u -r1.31 aggregator.test
--- modules/aggregator/aggregator.test	24 Aug 2009 17:11:42 -0000	1.31
+++ modules/aggregator/aggregator.test	31 Aug 2009 19:03:58 -0000
@@ -257,6 +257,21 @@
       $this->drupalPost('node/add/article', $edit, t('Save'));
     }
   }
+
+  function getRSSInvalidSample() {
+    $feed = <<<EOT
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0">
+  <channel>
+    <item>
+    </item>
+  </channel>
+</rss>
+EOT;
+
+    $path = 'public://rssinvalid.xml';
+    return file_unmanaged_save_data($feed, $path);
+  }
 }
 
 class AddFeedTestCase extends AggregatorTestCase {
@@ -328,6 +343,28 @@
       $this->deleteFeed($feed);
     }
   }
+  
+    
+  function testUpdateInvalidFeed() {
+    $feed = $this->createFeed();
+    $edit = $this->getFeedEditArray();
+    $edit['url'] = file_create_url($this->getRSSInvalidSample());
+    $this->drupalPost('admin/config/services/aggregator/edit/feed/' . $feed->fid, $edit, t('Save'));
+    $this->assertRaw(t('The feed %name has been updated.', array('%name' => $edit['title'])), t('The feed %name has been updated.', array('%name' => $edit['title'])));
+
+    // Check feed data.
+    $this->assertEqual($this->getUrl(), url('admin/config/services/aggregator/', array('absolute' => TRUE)));
+    $this->assertTrue($this->uniqueFeed($edit['title'], $edit['url']), t('The feed is unique.'));
+
+    // Check feed source.
+    $this->drupalGet('aggregator/sources/' . $feed->fid);
+    $this->assertResponse(200, t('Feed source exists.'));
+    $this->assertText($edit['title'], t('Page title'));
+
+    // Delete feed.
+    $feed->title = $edit['title']; // Set correct title so deleteFeed() will work.
+    $this->deleteFeed($feed);
+  }
 }
 
 class RemoveFeedTestCase extends AggregatorTestCase {
