? storm--886132-3.patch
? storm--new-1.patch
Index: stormtask/stormtask.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormtask/stormtask.module,v
retrieving revision 1.6.4.60
diff -u -p -r1.6.4.60 stormtask.module
--- stormtask/stormtask.module	19 May 2010 20:33:42 -0000	1.6.4.60
+++ stormtask/stormtask.module	19 Aug 2010 22:44:35 -0000
@@ -448,10 +448,10 @@ function stormtask_form(&$node) {
       }
     }
     
-    if ($_SESSION['stormtask_list_filter']['organization_nid'] && !$node->organization_nid) {
+    if (isset($_SESSION['stormtask_list_filter']['organization_nid']) && $_SESSION['stormtask_list_filter']['organization_nid'] && !$node->organization_nid) {
       $node->organization_nid = $_SESSION['stormtask_list_filter']['organization_nid'];
     }
-    if ($_SESSION['stormtask_list_filter']['project_nid'] && !$node->project_nid) {
+    if (isset($_SESSION['stormtask_list_filter']['project_nid']) && $_SESSION['stormtask_list_filter']['project_nid'] && !$node->project_nid) {
       $node->project_nid = $_SESSION['stormtask_list_filter']['project_nid'];
     }
     $s_org = "SELECT n.nid, n.title FROM {stormorganization} so INNER JOIN {node} n 
@@ -478,7 +478,7 @@ function stormtask_form(&$node) {
   $organizations = array();
   while ($organization = db_fetch_object($r)) {
     $organizations[$organization->nid] = $organization->title;
-    if (!$node->organization_nid) $node->organization_nid = $organization->nid;
+    if (!isset($node->organization_nid)) $node->organization_nid = $organization->nid;
   }
   $form['group1']['organization_nid'] = array(
     '#type' => 'select',
@@ -497,7 +497,7 @@ function stormtask_form(&$node) {
   $projects = array();
   while ($project = db_fetch_object($r)) {
     $projects[$project->nid] = $project->title;
-    if (!$node->project_nid) $node->project_nid = $project->nid;
+    if (!isset($node->project_nid)) $node->project_nid = $project->nid;
   }
   $form['group1']['project_nid'] = array(
     '#type' => 'select',
@@ -793,7 +793,7 @@ function _stormtask_beforesave(&$node) {
 function stormtask_nodeapi(&$node, $op, $teaser, $page) {
   switch ($op) {
     case 'prepare':
-      if(!$node->nid) {
+      if(!isset($node->nid)) {
         $node->iscustomer = 1;
         $node->isactive = 1;
 
@@ -894,7 +894,7 @@ function _stormtask_get_tree($project_ni
       }
     }
   }
-  return $tree ? $tree : array();
+  return isset($tree) ? $tree : array();
 }
 
 function _stormtask_plain_tree($tree) {
Index: stormtask/stormtask.test
===================================================================
RCS file: stormtask/stormtask.test
diff -N stormtask/stormtask.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ stormtask/stormtask.test	19 Aug 2010 22:44:36 -0000
@@ -0,0 +1,40 @@
+<?php
+class StormtaskTestCase extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => t('Storm Task Functionality'),
+      'description' => t('Test the functionality of the Storm Task module'),
+      'group' => 'Storm',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp('storm', 'stormattribute', 'stormorganization', 'stormproject', 'stormtask');
+  }
+
+  public function testStormtaskCreate() {
+    // Create and login user
+    $user = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: add', 'Storm project: view all', 'Storm task: add', 'Storm task: view all'));
+    $this->drupalLogin($user);
+  
+    // Create organization and invoice
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => '1',
+    );
+    $task = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $this->drupalPost('node/add/stormtask', $task, t('Save'));
+
+    $this->assertText(t('Task @title has been created.', array('@title' => $task['title'])));;
+  }
+}
