summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMichael Lüpkes <michael@luepkes.net>2015-02-03 11:16:10 +0100
committerMichael Lüpkes <michael@luepkes.net>2015-02-03 11:16:10 +0100
commite5ea36125536b5ac8f8a7e31c2602e9bd1b52075 (patch)
tree1879bcf0ca1fb3f7ea7375c548fdc00ab75e715a /tests
parent24300f828a684eedf71d63374effb2be95c13b1a (diff)
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'.
Diffstat (limited to 'tests')
-rw-r--r--tests/units/Base.php2
-rw-r--r--tests/units/ProjectDuplicationTest.php114
-rw-r--r--tests/units/SwimlaneTest.php30
3 files changed, 144 insertions, 2 deletions
diff --git a/tests/units/Base.php b/tests/units/Base.php
index b216aff4..311d3cdf 100644
--- a/tests/units/Base.php
+++ b/tests/units/Base.php
@@ -11,6 +11,8 @@ date_default_timezone_set('UTC');
abstract class Base extends PHPUnit_Framework_TestCase
{
+ protected $container;
+
public function setUp()
{
if (DB_DRIVER === 'mysql') {
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']);
+ }
}
diff --git a/tests/units/SwimlaneTest.php b/tests/units/SwimlaneTest.php
index bda0f590..0694f08a 100644
--- a/tests/units/SwimlaneTest.php
+++ b/tests/units/SwimlaneTest.php
@@ -375,4 +375,34 @@ class SwimlaneTest extends Base
$this->assertEquals(0, $swimlane['is_active']);
$this->assertEquals(0, $swimlane['position']);
}
+
+ public function testDuplicateSwimlane()
+ {
+ $p = new Project($this->container);
+ $s = new Swimlane($this->container);
+
+ $this->assertEquals(1, $p->create(array('name' => 'P1')));
+ $this->assertEquals(2, $p->create(array('name' => 'P2')));
+ $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));
+
+ $this->assertTrue($s->duplicate(1, 2));
+
+ $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']);
+ }
}