Improve automatic actions (move task to another position same columns)

This commit is contained in:
Frédéric Guillot
2014-05-26 12:54:06 -04:00
parent 2cb6b77ac8
commit 93783274a4
3 changed files with 38 additions and 5 deletions

View File

@@ -127,6 +127,17 @@ class Event
return in_array($eventName, $this->events); return in_array($eventName, $this->events);
} }
/**
* Flush the list of triggered events
*
* @access public
*/
public function clearTriggeredEvents()
{
$this->events = array();
$this->lastEvent = '';
}
/** /**
* Check if a listener bind to an event * Check if a listener bind to an event
* *

View File

@@ -456,6 +456,8 @@ class Task extends Base
*/ */
public function move($task_id, $column_id, $position) public function move($task_id, $column_id, $position)
{ {
$this->event->clearTriggeredEvents();
return $this->update(array( return $this->update(array(
'id' => $task_id, 'id' => $task_id,
'column_id' => $column_id, 'column_id' => $column_id,

View File

@@ -107,7 +107,7 @@ class ActionTest extends Base
// We create a task // We create a task
$this->assertEquals(1, $task->create(array( $this->assertEquals(1, $task->create(array(
'title' => 'unit_test', 'title' => 'unit_test 0',
'project_id' => 1, 'project_id' => 1,
'owner_id' => 1, 'owner_id' => 1,
'color_id' => 'red', 'color_id' => 'red',
@@ -115,6 +115,15 @@ class ActionTest extends Base
'category_id' => 1, 'category_id' => 1,
))); )));
$this->assertEquals(2, $task->create(array(
'title' => 'unit_test 1',
'project_id' => 1,
'owner_id' => 1,
'color_id' => 'yellow',
'column_id' => 1,
'category_id' => 1,
)));
// We create a new action, when the category_id=2 then the color_id should be green // We create a new action, when the category_id=2 then the color_id should be green
$this->assertTrue($action->create(array( $this->assertTrue($action->create(array(
'project_id' => 1, 'project_id' => 1,
@@ -137,14 +146,25 @@ class ActionTest extends Base
$this->assertEquals(1, $t1['is_active']); $this->assertEquals(1, $t1['is_active']);
$this->assertEquals('red', $t1['color_id']); $this->assertEquals('red', $t1['color_id']);
// We move our task $t1 = $task->getById(2);
$task->move(1, 1, 2); $this->assertEquals(1, $t1['position']);
$this->assertEquals(1, $t1['is_active']);
$this->assertEquals('yellow', $t1['color_id']);
// We move our tasks
$task->move(1, 1, 1); // task #1 to position 1
$task->move(2, 1, 0); // task #2 to position 0
$this->assertTrue($this->event->isEventTriggered(Task::EVENT_MOVE_POSITION)); $this->assertTrue($this->event->isEventTriggered(Task::EVENT_MOVE_POSITION));
// Our task should be green and have the position 2 // Both tasks should be green
$t1 = $task->getById(1); $t1 = $task->getById(1);
$this->assertEquals(2, $t1['position']); $this->assertEquals(1, $t1['position']);
$this->assertEquals(1, $t1['is_active']);
$this->assertEquals('green', $t1['color_id']);
$t1 = $task->getById(2);
$this->assertEquals(0, $t1['position']);
$this->assertEquals(1, $t1['is_active']); $this->assertEquals(1, $t1['is_active']);
$this->assertEquals('green', $t1['color_id']); $this->assertEquals('green', $t1['color_id']);
} }