diff options
Diffstat (limited to 'tests/units/ProjectDuplicationTest.php')
-rw-r--r-- | tests/units/ProjectDuplicationTest.php | 114 |
1 files changed, 112 insertions, 2 deletions
diff --git a/tests/units/ProjectDuplicationTest.php b/tests/units/ProjectDuplicationTest.php index ab50b9f1..9ddc8f89 100644 --- a/tests/units/ProjectDuplicationTest.php +++ b/tests/units/ProjectDuplicationTest.php @@ -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']); + } } |