Implemented Changes to Project Duplication to include Swimlanes and Tasks.
ProjectDuplication::duplicate accepts additional param of type array now. Array includes which optional parts to duplicate. Optional parts are: 'swimlane', 'category', 'task', 'action'.
This commit is contained in:
@@ -8,10 +8,10 @@ use Model\Category;
|
||||
use Model\ProjectPermission;
|
||||
use Model\ProjectDuplication;
|
||||
use Model\User;
|
||||
use Model\Swimlane;
|
||||
use Model\Task;
|
||||
use Model\TaskCreation;
|
||||
use Model\Acl;
|
||||
use Model\Board;
|
||||
use Model\TaskFinder;
|
||||
|
||||
class ProjectDuplicationTest extends Base
|
||||
{
|
||||
@@ -203,4 +203,114 @@ class ProjectDuplicationTest extends Base
|
||||
$this->assertEquals('blue', $actions[0]['params'][0]['value']);
|
||||
$this->assertEquals(5, $actions[0]['params'][1]['value']);
|
||||
}
|
||||
|
||||
public function testCloneProjectWithSwimlanesAndTasks()
|
||||
{
|
||||
$p = new Project($this->container);
|
||||
$pd = new ProjectDuplication($this->container);
|
||||
$s = new Swimlane($this->container);
|
||||
$tc = new TaskCreation($this->container);
|
||||
$tf = new TaskFinder($this->container);
|
||||
|
||||
$this->assertEquals(1, $p->create(array('name' => 'P1')));
|
||||
|
||||
// create initial swimlanes
|
||||
$this->assertEquals(1, $s->create(1, 'S1'));
|
||||
$this->assertEquals(2, $s->create(1, 'S2'));
|
||||
$this->assertEquals(3, $s->create(1, 'S3'));
|
||||
|
||||
$default_swimlane1 = $s->getDefault(1);
|
||||
$default_swimlane1['default_swimlane'] = 'New Default';
|
||||
|
||||
$this->assertTrue($s->updateDefault($default_swimlane1));
|
||||
|
||||
//create initial tasks
|
||||
$this->assertEquals(1, $tc->create(array('title' => 'T1', 'project_id' => 1, 'column_id' => 1, 'owner_id' => 1)));
|
||||
$this->assertEquals(2, $tc->create(array('title' => 'T2', 'project_id' => 1, 'column_id' => 2, 'owner_id' => 1)));
|
||||
$this->assertEquals(3, $tc->create(array('title' => 'T3', 'project_id' => 1, 'column_id' => 3, 'owner_id' => 1)));
|
||||
|
||||
$this->container['dispatcher']->addListener(Task::EVENT_CREATE_UPDATE, function() {});
|
||||
$this->container['dispatcher']->addListener(Task::EVENT_CREATE, function() {});
|
||||
|
||||
$this->assertEquals(2, $pd->duplicate(1, array('category', 'action', 'swimlane', 'task')));
|
||||
|
||||
// Check if Swimlanes have been duplicated
|
||||
$swimlanes = $s->getAll(2);
|
||||
|
||||
$this->assertCount(3, $swimlanes);
|
||||
$this->assertEquals(4, $swimlanes[0]['id']);
|
||||
$this->assertEquals('S1', $swimlanes[0]['name']);
|
||||
$this->assertEquals(5, $swimlanes[1]['id']);
|
||||
$this->assertEquals('S2', $swimlanes[1]['name']);
|
||||
$this->assertEquals(6, $swimlanes[2]['id']);
|
||||
$this->assertEquals('S3', $swimlanes[2]['name']);
|
||||
$this->assertEquals('New Default', $s->getDefault(2)['default_swimlane']);
|
||||
|
||||
// Check if Tasks have been duplicated
|
||||
|
||||
$tasks = $tf->getAll(2);
|
||||
|
||||
$this->assertCount(3, $tasks);
|
||||
$this->assertEquals(4, $tasks[0]['id']);
|
||||
$this->assertEquals('T1', $tasks[0]['title']);
|
||||
$this->assertEquals(5, $tasks[1]['id']);
|
||||
$this->assertEquals('T2', $tasks[1]['title']);
|
||||
$this->assertEquals(6, $tasks[2]['id']);
|
||||
$this->assertEquals('T3', $tasks[2]['title']);
|
||||
|
||||
// Drop project
|
||||
unset($tasks);
|
||||
unset($swimlanes);
|
||||
|
||||
$p->remove(2);
|
||||
|
||||
$this->assertFalse($p->exists(2));
|
||||
$this->assertCount(0, $s->getAll(2));
|
||||
$this->assertCount(0, $tf->getAll(2));
|
||||
|
||||
// Check duplication with Swimlanes only
|
||||
$this->assertEquals(2, $pd->duplicate(1, array('category', 'action', 'swimlane')));
|
||||
|
||||
// Check if Swimlanes have been duplicated
|
||||
$swimlanes = $s->getAll(2);
|
||||
|
||||
$this->assertCount(3, $swimlanes);
|
||||
$this->assertEquals(4, $swimlanes[0]['id']);
|
||||
$this->assertEquals('S1', $swimlanes[0]['name']);
|
||||
$this->assertEquals(5, $swimlanes[1]['id']);
|
||||
$this->assertEquals('S2', $swimlanes[1]['name']);
|
||||
$this->assertEquals(6, $swimlanes[2]['id']);
|
||||
$this->assertEquals('S3', $swimlanes[2]['name']);
|
||||
$this->assertEquals('New Default', $s->getDefault(2)['default_swimlane']);
|
||||
|
||||
// Check if Tasks have NOT been duplicated
|
||||
$this->assertCount(0, $tf->getAll(2));
|
||||
|
||||
// Drop project
|
||||
unset($tasks);
|
||||
unset($swimlanes);
|
||||
|
||||
$p->remove(2);
|
||||
|
||||
$this->assertFalse($p->exists(2));
|
||||
$this->assertCount(0, $s->getAll(2));
|
||||
$this->assertCount(0, $tf->getAll(2));
|
||||
|
||||
// Check duplication with Tasks only
|
||||
$this->assertEquals(2, $pd->duplicate(1, array('category', 'action', 'task')));
|
||||
|
||||
// Check if Swimlanes have NOT been duplicated
|
||||
$this->assertCount(0, $s->getAll(2));
|
||||
|
||||
// Check if Tasks have been duplicated
|
||||
$tasks = $tf->getAll(2);
|
||||
|
||||
$this->assertCount(3, $tasks);
|
||||
$this->assertEquals(4, $tasks[0]['id']);
|
||||
$this->assertEquals('T1', $tasks[0]['title']);
|
||||
$this->assertEquals(5, $tasks[1]['id']);
|
||||
$this->assertEquals('T2', $tasks[1]['title']);
|
||||
$this->assertEquals(6, $tasks[2]['id']);
|
||||
$this->assertEquals('T3', $tasks[2]['title']);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user