Index: feedapi_node/feedapi_node.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi/feedapi_node/Attic/feedapi_node.module,v
retrieving revision 1.1.2.18.2.31
diff -u -p -r1.1.2.18.2.31 feedapi_node.module
--- feedapi_node/feedapi_node.module	5 Jun 2009 13:32:47 -0000	1.1.2.18.2.31
+++ feedapi_node/feedapi_node.module	18 Jun 2009 13:39:17 -0000
@@ -286,9 +286,15 @@ function _feedapi_node_save($feed_item, 
     return FALSE;
   }
   
-  // Get the default options from the cont
-  $options = variable_get('node_options_'. $node->type, FALSE);
-  if (is_array($options)) {
+  // set node flags
+  if (!empty($settings['node_options'])) {
+    // set by _feedapi_node_update() or passed in
+    $node->status  = $settings['node_options']['status'];
+    $node->promote = $settings['node_options']['promote'];
+    $node->sticky  = $settings['node_options']['sticky'];
+  }
+  elseif (is_array($options = variable_get('node_options_'. $node->type, FALSE))) {
+    // Get the default options from the cont
     $node->status = in_array('status', $options) ? 1 : 0;
     $node->promote = in_array('promote', $options) ? 1 : 0;
     $node->sticky = in_array('sticky', $options) ? 1 : 0;
@@ -341,6 +353,10 @@ function _feedapi_node_save($feed_item, 
  */
 function _feedapi_node_update($feed_item, $feed_nid, $settings, $id) {
   $feed_item->nid = $id;
+  $node_options = db_fetch_array(db_query('SELECT status, promote, sticky FROM {node} WHERE nid = %d ORDER BY vid DESC', $id));
+  if (is_array($node_options)) {
+    $settings['node_options'] = $node_options;
+  }
   _feedapi_node_save($feed_item, $feed_nid, $settings);
   return $feed_item;
 }
Index: feedapi_node/tests/feedapi_node.module.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi/feedapi_node/tests/Attic/feedapi_node.module.test,v
retrieving revision 1.1.4.22
diff -u -p -r1.1.4.22 feedapi_node.module.test
--- feedapi_node/tests/feedapi_node.module.test	17 Jun 2009 14:46:23 -0000	1.1.4.22
+++ feedapi_node/tests/feedapi_node.module.test	18 Jun 2009 13:39:18 -0000
@@ -395,4 +397,55 @@ EOT;
     $this->assertText(t('Created date of item nodes'), 'FeedAPI Node settings at content-type edit page.');
   }
   
+  /**
+   * Checks if the node updates by feedapi_node do not alter basic node options
+   */
+  function testKeepNodeSettingsAtUpdate() {
+    $this->create_type(array_pop($this->get_parsers()));
+    $settings = feedapi_get_settings($this->info->type);
+    $this->feedapi_user();
+    $feed_url = "http://novaak.net/test_feed.rss?". $this->randomName();
+    $edit = array(
+      'feedapi[feedapi_url]' => $feed_url,
+    );
+    $this->drupalPost('node/add/'. $this->info->type, $edit, 'Save');
+    $node = db_fetch_object(db_query("SELECT nid FROM {feedapi} WHERE url = '%s'", $feed_url));
+    $this->drupalGet("node/{$node->nid}/refresh");
+    $notification = t("%new new item(s) were saved. %updated existing item(s) were updated.", array("%new" => 10, "%updated" => 0));
+    $notification = str_replace('<em>', '', $notification);
+    $notification = str_replace('</em>', '', $notification);
+    $this->assertText($notification, 'The proper number of items were created');
+    
+    // Get one item's nid and guid
+    $existing_item = db_fetch_array(db_query_range('SELECT nid, guid, url from {feedapi_node_item} fi join {feedapi_node_item_feed} fif ON fi.nid = fif.feed_item_nid WHERE fif.feed_nid = %d', $node->nid, 1, 1));
+    
+    
+    $sticky = db_result(db_query("SELECT sticky FROM {node} WHERE nid = %d", $existing_item['nid']));
+    $this->assertTrue(!$sticky, 'The sticky bit is off by default.');
+    
+    // Set the sticky to 1 on the item
+    db_query("UPDATE {node} SET sticky = 1 WHERE nid = %d", $existing_item['nid']);
+    
+    $item = new stdClass();
+    $item->nid = 
+    $item->title = $this->randomName(59);
+    $item->description = $this->randomName(666);
+    $item->options = new stdClass();
+    $item->options->guid = $existing_item['guid'];
+    $item->options->original_url = $existing_item['url'];
+    $item->options->timestamp = time();
+    module_invoke('feedapi_node', 'feedapi_item', 'update', $item, $node->nid, $settings['processors']['feedapi_node'], $existing_item['nid']);
+    
+    $sticky = db_result(db_query("SELECT sticky FROM {node} WHERE nid = %d", $existing_item['nid']));
+    $this->assertTrue($sticky, 'The sticky bit remained the same just as before the update');
+    
+    $this->drupalGet('node/'. $existing_item['nid']);
+    $this->assertText($item->title, 'The item node update was successful');
+    $this->assertText($item->description, 'The item node update was successful');
+    
+    $this->drupalGet('/');
+    $this->assertText($item->title, 'The item node really appears on the first page.');
+    
+  }
+  
 }
