forked from kanboard/kanboard
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
<?php | ||
|
||
namespace Action; | ||
|
||
use Model\Task; | ||
|
||
/** | ||
* Assign a color to a task | ||
* | ||
* @package action | ||
*/ | ||
class TaskAssignColor extends Base | ||
{ | ||
/** | ||
* Get the list of compatible events | ||
* | ||
* @access public | ||
* @return array | ||
*/ | ||
public function getCompatibleEvents() | ||
{ | ||
return array( | ||
Task::EVENT_MOVE_COLUMN, | ||
); | ||
} | ||
|
||
/** | ||
* Get the required parameter for the action (defined by the user) | ||
* | ||
* @access public | ||
* @return array | ||
*/ | ||
public function getActionRequiredParameters() | ||
{ | ||
return array( | ||
'column_id' => t('Column'), | ||
'color_id' => t('Color'), | ||
); | ||
} | ||
|
||
/** | ||
* Get the required parameter for the event | ||
* | ||
* @access public | ||
* @return string[] | ||
*/ | ||
public function getEventRequiredParameters() | ||
{ | ||
return array( | ||
'task_id', | ||
'column_id', | ||
); | ||
} | ||
|
||
/** | ||
* Execute the action (set the task color) | ||
* | ||
* @access public | ||
* @param array $data Event data dictionary | ||
* @return bool True if the action was executed or false when not executed | ||
*/ | ||
public function doAction(array $data) | ||
{ | ||
$values = array( | ||
'id' => $data['task_id'], | ||
'color_id' => $this->getParam('color_id'), | ||
); | ||
|
||
return $this->taskModification->update($values); | ||
} | ||
|
||
/** | ||
* Check if the event data meet the action condition | ||
* | ||
* @access public | ||
* @param array $data Event data dictionary | ||
* @return bool | ||
*/ | ||
public function hasRequiredCondition(array $data) | ||
{ | ||
return $data['column_id'] == $this->getParam('column_id'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
<?php | ||
|
||
require_once __DIR__.'/Base.php'; | ||
|
||
use Event\GenericEvent; | ||
use Model\Task; | ||
use Model\TaskCreation; | ||
use Model\TaskFinder; | ||
use Model\Project; | ||
|
||
class ActionTaskAssignColorTest extends Base | ||
{ | ||
public function testColorChange() | ||
{ | ||
$action = new Action\TaskAssignColor($this->container, 1, Task::EVENT_MOVE_COLUMN); | ||
$action->setParam('column_id', 2); | ||
$action->setParam('color_id', 'green'); | ||
|
||
// We create a task in the first column | ||
$tc = new TaskCreation($this->container); | ||
$tf = new TaskFinder($this->container); | ||
$p = new Project($this->container); | ||
|
||
$this->assertEquals(1, $p->create(array('name' => 'test'))); | ||
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 1, 'color_id' => 'yellow'))); | ||
|
||
$event = array( | ||
'project_id' => 1, | ||
'task_id' => 1, | ||
'column_id' => 2, | ||
'color_id' => 'green', | ||
); | ||
|
||
// Our event should be executed | ||
$this->assertTrue($action->execute(new GenericEvent($event))); | ||
|
||
// Our task should have color green | ||
$task = $tf->getById(1); | ||
$this->assertEquals('green', $task['color_id']); | ||
} | ||
} |