Ensure that only the tasks really completed get removed from the stack. Redirect...
authorGunnar Wrobel <p@rdus.de>
Tue, 9 Mar 2010 17:30:04 +0000 (18:30 +0100)
committerGunnar Wrobel <p@rdus.de>
Tue, 9 Mar 2010 17:30:04 +0000 (18:30 +0100)
The test runs further though it is still not complete.

framework/LoginTasks/lib/Horde/LoginTasks.php
framework/LoginTasks/lib/Horde/LoginTasks/Tasklist.php
framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php

index 858132e..40062cc 100644 (file)
@@ -245,8 +245,10 @@ class Horde_LoginTasks
             return $this->_backend->redirect($tasklist_target);
         }
 
-        if (!$processed && $need_display) {
-            $this->_tasklist->target = $url;
+        if ((!$processed || $confirmed) && $need_display) {
+            if (empty($this->_tasklist->target)) {
+                $this->_tasklist->target = $url;
+            }
             return $this->_backend->redirect($this->getLoginTasksUrl());
         }
     }
index cdd922f..ecdcbbc 100644 (file)
@@ -107,7 +107,7 @@ class Horde_LoginTasks_Tasklist
         }
 
         if ($advance) {
-            $this->_tasks = array_slice($this->_tasks, count($tmp) + $this->_ptr);
+            $this->_tasks = array_slice($this->_tasks, count($tmp));
             $this->_ptr = 0;
         }
 
index 1107e1c..1643c7b 100644 (file)
@@ -422,14 +422,21 @@ class Horde_LoginTasks_LoginTasksTest extends PHPUnit_Framework_TestCase
         );
         $tasks->runTasks(false, 'redirect');
         $tasks->displayTasks();
+        $this->assertContains(
+            'http:///services/logintasks.php?app=test',
+            (string) $tasks->runTasks(true)
+        );
+        $this->assertNull(
+            $tasks->runTasks(false)
+        );
+        $tasks->displayTasks();
         $this->assertEquals(
-            'redirect', $tasks->runTasks(true, null)
+            'redirect', $tasks->runTasks(true)
         );
     }
 
     public function testConfirmSeriesDisplay()
     {
-        //$this->markTestIncomplete();
         Horde_LoginTasks_Stub_Task::$executed = array();
         $tasks = $this->_getLoginTasks(
             array(
@@ -468,8 +475,9 @@ class Horde_LoginTasks_LoginTasksTest extends PHPUnit_Framework_TestCase
         );
         $_POST['logintasks_confirm_0'] = true;
         $_POST['logintasks_confirm_1'] = true;
-        $this->assertNull(
-            $tasks->runTasks(true)
+        $this->assertContains(
+            'http:///services/logintasks.php?app=test',
+            (string) $tasks->runTasks(true)
         );
         $this->assertEquals(
             array(
@@ -499,10 +507,23 @@ class Horde_LoginTasks_LoginTasksTest extends PHPUnit_Framework_TestCase
         asort($classes);
         $this->assertEquals(
             array(
-                'Horde_LoginTasks_Stub_Confirm'
+                'Horde_LoginTasks_Stub_Notice'
             ),
             $classes
         );
+        $this->assertContains(
+            'http:///services/logintasks.php?app=test',
+            (string) $tasks->runTasks(true)
+        );
+        $this->assertEquals(
+            array(
+                'Horde_LoginTasks_Stub_ConfirmNo',
+                'Horde_LoginTasks_Stub_Confirm',
+                'Horde_LoginTasks_Stub_Task',
+                'Horde_LoginTasks_Stub_Notice'
+            ),
+            Horde_LoginTasks_Stub_Task::$executed
+        );
     }
 
     private function _getLoginTasks(