summaryrefslogtreecommitdiff
path: root/tests/units/Model
diff options
context:
space:
mode:
Diffstat (limited to 'tests/units/Model')
-rw-r--r--tests/units/Model/ActionTest.php6
-rw-r--r--tests/units/Model/BoardTest.php227
-rw-r--r--tests/units/Model/CategoryTest.php214
-rw-r--r--tests/units/Model/ColorTest.php93
-rw-r--r--tests/units/Model/ColumnTest.php236
-rw-r--r--tests/units/Model/CommentTest.php1
-rw-r--r--tests/units/Model/ConfigTest.php1
-rw-r--r--tests/units/Model/FileTest.php263
-rw-r--r--tests/units/Model/NotificationTest.php5
-rw-r--r--tests/units/Model/ProjectActivityTest.php3
-rw-r--r--tests/units/Model/ProjectDailyColumnStatsTest.php1
-rw-r--r--tests/units/Model/ProjectDailyStatsTest.php10
-rw-r--r--tests/units/Model/ProjectDuplicationTest.php383
-rw-r--r--tests/units/Model/ProjectFileTest.php311
-rw-r--r--tests/units/Model/ProjectGroupRoleTest.php38
-rw-r--r--tests/units/Model/ProjectPermissionTest.php22
-rw-r--r--tests/units/Model/ProjectTest.php2
-rw-r--r--tests/units/Model/ProjectUserRoleTest.php61
-rw-r--r--tests/units/Model/SubtaskTest.php191
-rw-r--r--tests/units/Model/SubtaskTimeTrackingTest.php2
-rw-r--r--tests/units/Model/SwimlaneTest.php270
-rw-r--r--tests/units/Model/TaskCreationTest.php5
-rw-r--r--tests/units/Model/TaskDuplicationTest.php27
-rw-r--r--tests/units/Model/TaskExportTest.php57
-rw-r--r--tests/units/Model/TaskExternalLinkTest.php123
-rw-r--r--tests/units/Model/TaskFileTest.php445
-rw-r--r--tests/units/Model/TaskFilterTest.php1
-rw-r--r--tests/units/Model/TaskFinderTest.php3
-rw-r--r--tests/units/Model/TaskLinkTest.php1
-rw-r--r--tests/units/Model/TaskModificationTest.php1
-rw-r--r--tests/units/Model/TaskPermissionTest.php2
-rw-r--r--tests/units/Model/TaskPositionTest.php14
-rw-r--r--tests/units/Model/TransitionTest.php141
-rw-r--r--tests/units/Model/UserNotificationTest.php4
-rw-r--r--tests/units/Model/UserTest.php28
-rw-r--r--tests/units/Model/UserUnreadNotificationTest.php3
36 files changed, 2149 insertions, 1046 deletions
diff --git a/tests/units/Model/ActionTest.php b/tests/units/Model/ActionTest.php
index 8d574115..ed687846 100644
--- a/tests/units/Model/ActionTest.php
+++ b/tests/units/Model/ActionTest.php
@@ -6,7 +6,7 @@ use Kanboard\Model\Action;
use Kanboard\Model\Project;
use Kanboard\Model\Task;
use Kanboard\Model\User;
-use Kanboard\Model\Board;
+use Kanboard\Model\Column;
use Kanboard\Model\Category;
use Kanboard\Model\ProjectUserRole;
use Kanboard\Core\Security\Role;
@@ -260,12 +260,12 @@ class ActionTest extends Base
{
$projectModel = new Project($this->container);
$actionModel = new Action($this->container);
- $boardModel = new Board($this->container);
+ $columnModel = new Column($this->container);
$this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
$this->assertEquals(2, $projectModel->create(array('name' => 'test2')));
- $this->assertTrue($boardModel->updateColumn(2, 'My unique column'));
+ $this->assertTrue($columnModel->update(2, 'My unique column'));
$this->assertEquals(1, $actionModel->create(array(
'project_id' => 1,
diff --git a/tests/units/Model/BoardTest.php b/tests/units/Model/BoardTest.php
index bb6c4b76..bb0778ce 100644
--- a/tests/units/Model/BoardTest.php
+++ b/tests/units/Model/BoardTest.php
@@ -4,6 +4,7 @@ require_once __DIR__.'/../Base.php';
use Kanboard\Model\Project;
use Kanboard\Model\Board;
+use Kanboard\Model\Column;
use Kanboard\Model\Config;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
@@ -15,12 +16,13 @@ class BoardTest extends Base
{
$p = new Project($this->container);
$b = new Board($this->container);
+ $columnModel = new Column($this->container);
$c = new Config($this->container);
// Default columns
$this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
- $columns = $b->getColumnsList(1);
+ $columns = $columnModel->getList(1);
$this->assertTrue(is_array($columns));
$this->assertEquals(4, count($columns));
@@ -37,7 +39,7 @@ class BoardTest extends Base
$this->assertEquals($input, $c->get('board_columns'));
$this->assertEquals(2, $p->create(array('name' => 'UnitTest2')));
- $columns = $b->getColumnsList(2);
+ $columns = $columnModel->getList(2);
$this->assertTrue(is_array($columns));
$this->assertEquals(2, count($columns));
@@ -161,225 +163,4 @@ class BoardTest extends Base
$this->assertEquals(1, $board[1]['columns'][3]['tasks'][0]['position']);
$this->assertEquals(1, $board[1]['columns'][3]['tasks'][0]['swimlane_id']);
}
-
- public function testGetColumn()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
-
- $column = $b->getColumn(3);
- $this->assertNotEmpty($column);
- $this->assertEquals('Work in progress', $column['title']);
-
- $column = $b->getColumn(33);
- $this->assertEmpty($column);
- }
-
- public function testRemoveColumn()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
- $this->assertTrue($b->removeColumn(3));
- $this->assertFalse($b->removeColumn(322));
-
- $columns = $b->getColumns(1);
- $this->assertTrue(is_array($columns));
- $this->assertEquals(3, count($columns));
- }
-
- public function testUpdateColumn()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
-
- $this->assertTrue($b->updateColumn(3, 'blah', 5));
- $this->assertTrue($b->updateColumn(2, 'boo'));
-
- $column = $b->getColumn(3);
- $this->assertNotEmpty($column);
- $this->assertEquals('blah', $column['title']);
- $this->assertEquals(5, $column['task_limit']);
-
- $column = $b->getColumn(2);
- $this->assertNotEmpty($column);
- $this->assertEquals('boo', $column['title']);
- $this->assertEquals(0, $column['task_limit']);
- }
-
- public function testAddColumn()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
- $this->assertNotFalse($b->addColumn(1, 'another column'));
- $this->assertNotFalse($b->addColumn(1, 'one more', 3, 'one more description'));
-
- $columns = $b->getColumns(1);
- $this->assertTrue(is_array($columns));
- $this->assertEquals(6, count($columns));
-
- $this->assertEquals('another column', $columns[4]['title']);
- $this->assertEquals(0, $columns[4]['task_limit']);
- $this->assertEquals(5, $columns[4]['position']);
-
- $this->assertEquals('one more', $columns[5]['title']);
- $this->assertEquals(3, $columns[5]['task_limit']);
- $this->assertEquals(6, $columns[5]['position']);
- $this->assertEquals('one more description', $columns[5]['description']);
- }
-
- public function testMoveColumns()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- // We create 2 projects
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
- $this->assertEquals(2, $p->create(array('name' => 'UnitTest2')));
-
- // We get the columns of the project 2
- $columns = $b->getColumns(2);
- $columns_id = array_keys($b->getColumnsList(2));
- $this->assertNotEmpty($columns);
-
- // Initial order: 5, 6, 7, 8
-
- // Move the column 1 down
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals($columns_id[0], $columns[0]['id']);
-
- $this->assertEquals(2, $columns[1]['position']);
- $this->assertEquals($columns_id[1], $columns[1]['id']);
-
- $this->assertTrue($b->moveDown(2, $columns[0]['id']));
- $columns = $b->getColumns(2); // Sorted by position
-
- // New order: 6, 5, 7, 8
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals($columns_id[1], $columns[0]['id']);
-
- $this->assertEquals(2, $columns[1]['position']);
- $this->assertEquals($columns_id[0], $columns[1]['id']);
-
- // Move the column 3 up
- $this->assertTrue($b->moveUp(2, $columns[2]['id']));
- $columns = $b->getColumns(2);
-
- // New order: 6, 7, 5, 8
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals($columns_id[1], $columns[0]['id']);
-
- $this->assertEquals(2, $columns[1]['position']);
- $this->assertEquals($columns_id[2], $columns[1]['id']);
-
- $this->assertEquals(3, $columns[2]['position']);
- $this->assertEquals($columns_id[0], $columns[2]['id']);
-
- // Move column 1 up (must do nothing because it's the first column)
- $this->assertFalse($b->moveUp(2, $columns[0]['id']));
- $columns = $b->getColumns(2);
-
- // Order: 6, 7, 5, 8
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals($columns_id[1], $columns[0]['id']);
-
- // Move column 4 down (must do nothing because it's the last column)
- $this->assertFalse($b->moveDown(2, $columns[3]['id']));
- $columns = $b->getColumns(2);
-
- // Order: 6, 7, 5, 8
-
- $this->assertEquals(4, $columns[3]['position']);
- $this->assertEquals($columns_id[3], $columns[3]['id']);
- }
-
- public function testMoveUpAndRemoveColumn()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- // We create a project
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
-
- // We remove the second column
- $this->assertTrue($b->removeColumn(2));
-
- $columns = $b->getColumns(1);
- $this->assertNotEmpty($columns);
- $this->assertCount(3, $columns);
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals(3, $columns[1]['position']);
- $this->assertEquals(4, $columns[2]['position']);
-
- $this->assertEquals(1, $columns[0]['id']);
- $this->assertEquals(3, $columns[1]['id']);
- $this->assertEquals(4, $columns[2]['id']);
-
- // We move up the second column
- $this->assertTrue($b->moveUp(1, $columns[1]['id']));
-
- // Check the new positions
- $columns = $b->getColumns(1);
- $this->assertNotEmpty($columns);
- $this->assertCount(3, $columns);
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals(2, $columns[1]['position']);
- $this->assertEquals(3, $columns[2]['position']);
-
- $this->assertEquals(3, $columns[0]['id']);
- $this->assertEquals(1, $columns[1]['id']);
- $this->assertEquals(4, $columns[2]['id']);
- }
-
- public function testMoveDownAndRemoveColumn()
- {
- $p = new Project($this->container);
- $b = new Board($this->container);
-
- // We create a project
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest1')));
-
- // We remove the second column
- $this->assertTrue($b->removeColumn(2));
-
- $columns = $b->getColumns(1);
- $this->assertNotEmpty($columns);
- $this->assertCount(3, $columns);
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals(3, $columns[1]['position']);
- $this->assertEquals(4, $columns[2]['position']);
-
- $this->assertEquals(1, $columns[0]['id']);
- $this->assertEquals(3, $columns[1]['id']);
- $this->assertEquals(4, $columns[2]['id']);
-
- // We move up the second column
- $this->assertTrue($b->moveDown(1, $columns[0]['id']));
-
- // Check the new positions
- $columns = $b->getColumns(1);
- $this->assertNotEmpty($columns);
- $this->assertCount(3, $columns);
-
- $this->assertEquals(1, $columns[0]['position']);
- $this->assertEquals(2, $columns[1]['position']);
- $this->assertEquals(3, $columns[2]['position']);
-
- $this->assertEquals(3, $columns[0]['id']);
- $this->assertEquals(1, $columns[1]['id']);
- $this->assertEquals(4, $columns[2]['id']);
- }
}
diff --git a/tests/units/Model/CategoryTest.php b/tests/units/Model/CategoryTest.php
index 85d9eaae..600007d0 100644
--- a/tests/units/Model/CategoryTest.php
+++ b/tests/units/Model/CategoryTest.php
@@ -2,66 +2,216 @@
require_once __DIR__.'/../Base.php';
-use Kanboard\Model\Task;
+use Kanboard\Model\Config;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
use Kanboard\Model\Project;
use Kanboard\Model\Category;
-use Kanboard\Model\User;
class CategoryTest extends Base
{
public function testCreation()
{
- $tc = new TaskCreation($this->container);
- $tf = new TaskFinder($this->container);
- $p = new Project($this->container);
- $c = new Category($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskFinderModel = new TaskFinder($this->container);
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'Project #1')));
- $this->assertEquals(1, $c->create(array('name' => 'Category #1', 'project_id' => 1)));
- $this->assertEquals(2, $c->create(array('name' => 'Category #2', 'project_id' => 1)));
- $this->assertEquals(1, $tc->create(array('title' => 'Task #1', 'project_id' => 1, 'category_id' => 2)));
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1)));
+ $this->assertEquals(2, $categoryModel->create(array('name' => 'Category #2', 'project_id' => 1)));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Task #1', 'project_id' => 1, 'category_id' => 2)));
- $task = $tf->getById(1);
- $this->assertTrue(is_array($task));
+ $task = $taskFinderModel->getById(1);
$this->assertEquals(2, $task['category_id']);
- $category = $c->getById(2);
- $this->assertTrue(is_array($category));
+ $category = $categoryModel->getById(2);
$this->assertEquals(2, $category['id']);
$this->assertEquals('Category #2', $category['name']);
$this->assertEquals(1, $category['project_id']);
+ }
+
+ public function testExists()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1)));
+ $this->assertTrue($categoryModel->exists(1));
+ $this->assertFalse($categoryModel->exists(2));
+ }
+
+ public function testGetById()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1, 'description' => 'test')));
+
+ $category = $categoryModel->getById(1);
+ $this->assertEquals(1, $category['id']);
+ $this->assertEquals('Category #1', $category['name']);
+ $this->assertEquals(1, $category['project_id']);
+ $this->assertEquals('test', $category['description']);
+ }
+
+ public function testGetNameById()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1, 'description' => 'test')));
+
+ $this->assertEquals('Category #1', $categoryModel->getNameById(1));
+ $this->assertEquals('', $categoryModel->getNameById(2));
+ }
+
+ public function testGetIdByName()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1, 'description' => 'test')));
+
+ $this->assertSame(1, $categoryModel->getIdByName(1, 'Category #1'));
+ $this->assertSame(0, $categoryModel->getIdByName(1, 'Category #2'));
+ }
+
+ public function testGetList()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1, 'description' => 'test')));
+ $this->assertEquals(2, $categoryModel->create(array('name' => 'Category #2', 'project_id' => 1)));
+
+ $categories = $categoryModel->getList(1, false, false);
+ $this->assertCount(2, $categories);
+ $this->assertEquals('Category #1', $categories[1]);
+ $this->assertEquals('Category #2', $categories[2]);
+
+ $categories = $categoryModel->getList(1, true, false);
+ $this->assertCount(3, $categories);
+ $this->assertEquals('No category', $categories[0]);
+ $this->assertEquals('Category #1', $categories[1]);
+ $this->assertEquals('Category #2', $categories[2]);
- $this->assertEquals(2, $c->getIdByName(1, 'Category #2'));
- $this->assertEquals(0, $c->getIdByName(2, 'Category #2'));
+ $categories = $categoryModel->getList(1, false, true);
+ $this->assertCount(3, $categories);
+ $this->assertEquals('All categories', $categories[-1]);
+ $this->assertEquals('Category #1', $categories[1]);
+ $this->assertEquals('Category #2', $categories[2]);
- $this->assertEquals('Category #2', $c->getNameById(2));
- $this->assertEquals('', $c->getNameById(23));
+ $categories = $categoryModel->getList(1, true, true);
+ $this->assertCount(4, $categories);
+ $this->assertEquals('All categories', $categories[-1]);
+ $this->assertEquals('No category', $categories[0]);
+ $this->assertEquals('Category #1', $categories[1]);
+ $this->assertEquals('Category #2', $categories[2]);
+ }
+
+ public function testGetAll()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1, 'description' => 'test')));
+ $this->assertEquals(2, $categoryModel->create(array('name' => 'Category #2', 'project_id' => 1)));
+
+ $categories = $categoryModel->getAll(1);
+ $this->assertCount(2, $categories);
+
+ $this->assertEquals('Category #1', $categories[0]['name']);
+ $this->assertEquals('test', $categories[0]['description']);
+ $this->assertEquals(1, $categories[0]['project_id']);
+ $this->assertEquals(1, $categories[0]['id']);
+
+ $this->assertEquals('Category #2', $categories[1]['name']);
+ $this->assertEquals('', $categories[1]['description']);
+ $this->assertEquals(1, $categories[1]['project_id']);
+ $this->assertEquals(2, $categories[1]['id']);
+ }
+
+ public function testCreateDefaultCategories()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+ $configModel = new Config($this->container);
+
+ $this->assertTrue($configModel->save(array('project_categories' => 'C1, C2, C3')));
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertTrue($categoryModel->createDefaultCategories(1));
+
+ $categories = $categoryModel->getAll(1);
+ $this->assertCount(3, $categories);
+ $this->assertEquals('C1', $categories[0]['name']);
+ $this->assertEquals('C2', $categories[1]['name']);
+ $this->assertEquals('C3', $categories[2]['name']);
+ }
+
+ public function testUpdate()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1)));
+ $this->assertTrue($categoryModel->update(array('id' => 1, 'description' => 'test')));
+
+ $category = $categoryModel->getById(1);
+ $this->assertEquals('Category #1', $category['name']);
+ $this->assertEquals(1, $category['project_id']);
+ $this->assertEquals('test', $category['description']);
}
public function testRemove()
{
- $tc = new TaskCreation($this->container);
- $tf = new TaskFinder($this->container);
- $p = new Project($this->container);
- $c = new Category($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskFinderModel = new TaskFinder($this->container);
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'Project #1')));
- $this->assertEquals(1, $c->create(array('name' => 'Category #1', 'project_id' => 1)));
- $this->assertEquals(2, $c->create(array('name' => 'Category #2', 'project_id' => 1)));
- $this->assertEquals(1, $tc->create(array('title' => 'Task #1', 'project_id' => 1, 'category_id' => 2)));
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1)));
+ $this->assertEquals(2, $categoryModel->create(array('name' => 'Category #2', 'project_id' => 1)));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Task #1', 'project_id' => 1, 'category_id' => 2)));
- $task = $tf->getById(1);
- $this->assertTrue(is_array($task));
+ $task = $taskFinderModel->getById(1);
$this->assertEquals(2, $task['category_id']);
- $this->assertTrue($c->remove(1));
- $this->assertTrue($c->remove(2));
+ $this->assertTrue($categoryModel->remove(1));
+ $this->assertTrue($categoryModel->remove(2));
// Make sure tasks assigned with that category are reseted
- $task = $tf->getById(1);
- $this->assertTrue(is_array($task));
+ $task = $taskFinderModel->getById(1);
$this->assertEquals(0, $task['category_id']);
}
+
+ public function testDuplicate()
+ {
+ $projectModel = new Project($this->container);
+ $categoryModel = new Category($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1')));
+ $this->assertEquals(2, $projectModel->create(array('name' => 'Project #2')));
+ $this->assertEquals(1, $categoryModel->create(array('name' => 'Category #1', 'project_id' => 1, 'description' => 'test')));
+
+ $this->assertTrue($categoryModel->duplicate(1, 2));
+
+ $category = $categoryModel->getById(1);
+ $this->assertEquals('Category #1', $category['name']);
+ $this->assertEquals(1, $category['project_id']);
+ $this->assertEquals('test', $category['description']);
+
+ $category = $categoryModel->getById(2);
+ $this->assertEquals('Category #1', $category['name']);
+ $this->assertEquals(2, $category['project_id']);
+ $this->assertEquals('test', $category['description']);
+ }
}
diff --git a/tests/units/Model/ColorTest.php b/tests/units/Model/ColorTest.php
new file mode 100644
index 00000000..e96ecb6b
--- /dev/null
+++ b/tests/units/Model/ColorTest.php
@@ -0,0 +1,93 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Kanboard\Model\Color;
+use Kanboard\Model\Config;
+
+class ColorTest extends Base
+{
+ public function testFind()
+ {
+ $colorModel = new Color($this->container);
+ $this->assertEquals('yellow', $colorModel->find('yellow'));
+ $this->assertEquals('yellow', $colorModel->find('Yellow'));
+ $this->assertEquals('dark_grey', $colorModel->find('Dark Grey'));
+ $this->assertEquals('dark_grey', $colorModel->find('dark_grey'));
+ }
+
+ public function testGetColorProperties()
+ {
+ $colorModel = new Color($this->container);
+ $expected = array(
+ 'name' => 'Light Green',
+ 'background' => '#dcedc8',
+ 'border' => '#689f38',
+ );
+
+ $this->assertEquals($expected, $colorModel->getColorProperties('light_green'));
+
+ $expected = array(
+ 'name' => 'Yellow',
+ 'background' => 'rgb(245, 247, 196)',
+ 'border' => 'rgb(223, 227, 45)',
+ );
+
+ $this->assertEquals($expected, $colorModel->getColorProperties('foobar'));
+ }
+
+ public function testGetList()
+ {
+ $colorModel = new Color($this->container);
+
+ $colors = $colorModel->getList();
+ $this->assertCount(16, $colors);
+ $this->assertEquals('Yellow', $colors['yellow']);
+
+ $colors = $colorModel->getList(true);
+ $this->assertCount(17, $colors);
+ $this->assertEquals('All colors', $colors['']);
+ $this->assertEquals('Yellow', $colors['yellow']);
+ }
+
+ public function testGetDefaultColor()
+ {
+ $colorModel = new Color($this->container);
+ $configModel = new Config($this->container);
+
+ $this->assertEquals('yellow', $colorModel->getDefaultColor());
+
+ $this->container['memoryCache']->flush();
+ $this->assertTrue($configModel->save(array('default_color' => 'red')));
+ $this->assertEquals('red', $colorModel->getDefaultColor());
+ }
+
+ public function testGetDefaultColors()
+ {
+ $colorModel = new Color($this->container);
+
+ $colors = $colorModel->getDefaultColors();
+ $this->assertCount(16, $colors);
+ }
+
+ public function testGetBorderColor()
+ {
+ $colorModel = new Color($this->container);
+ $this->assertEquals('rgb(74, 227, 113)', $colorModel->getBorderColor('green'));
+ }
+
+ public function testGetBackgroundColor()
+ {
+ $colorModel = new Color($this->container);
+ $this->assertEquals('rgb(189, 244, 203)', $colorModel->getBackgroundColor('green'));
+ }
+
+ public function testGetCss()
+ {
+ $colorModel = new Color($this->container);
+ $css = $colorModel->getCss();
+
+ $this->assertStringStartsWith('div.color-yellow {', $css);
+ $this->assertStringEndsWith('td.color-amber { background-color: #ffe082}', $css);
+ }
+}
diff --git a/tests/units/Model/ColumnTest.php b/tests/units/Model/ColumnTest.php
new file mode 100644
index 00000000..e40f89c6
--- /dev/null
+++ b/tests/units/Model/ColumnTest.php
@@ -0,0 +1,236 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Kanboard\Model\Project;
+use Kanboard\Model\Column;
+
+class ColumnTest extends Base
+{
+ public function testGetColumn()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+
+ $column = $columnModel->getById(3);
+ $this->assertNotEmpty($column);
+ $this->assertEquals('Work in progress', $column['title']);
+
+ $column = $columnModel->getById(33);
+ $this->assertEmpty($column);
+ }
+
+ public function testGetFirstColumnId()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertEquals(1, $columnModel->getFirstColumnId(1));
+ }
+
+ public function testGetLastColumnId()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertEquals(4, $columnModel->getLastColumnId(1));
+ }
+
+ public function testGetLastColumnPosition()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertEquals(4, $columnModel->getLastColumnPosition(1));
+ }
+
+ public function testGetColumnIdByTitle()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertEquals(2, $columnModel->getColumnIdByTitle(1, 'Ready'));
+ }
+
+ public function testGetTitleByColumnId()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertEquals('Work in progress', $columnModel->getColumnTitleById(3));
+ }
+
+ public function testGetAll()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertCount(4, $columns);
+
+ $this->assertEquals(1, $columns[0]['id']);
+ $this->assertEquals(1, $columns[0]['position']);
+ $this->assertEquals('Backlog', $columns[0]['title']);
+
+ $this->assertEquals(2, $columns[1]['id']);
+ $this->assertEquals(2, $columns[1]['position']);
+ $this->assertEquals('Ready', $columns[1]['title']);
+
+ $this->assertEquals(3, $columns[2]['id']);
+ $this->assertEquals(3, $columns[2]['position']);
+ $this->assertEquals('Work in progress', $columns[2]['title']);
+
+ $this->assertEquals(4, $columns[3]['id']);
+ $this->assertEquals(4, $columns[3]['position']);
+ $this->assertEquals('Done', $columns[3]['title']);
+ }
+
+ public function testGetList()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+
+ $columns = $columnModel->getList(1);
+ $this->assertCount(4, $columns);
+ $this->assertEquals('Backlog', $columns[1]);
+ $this->assertEquals('Ready', $columns[2]);
+ $this->assertEquals('Work in progress', $columns[3]);
+ $this->assertEquals('Done', $columns[4]);
+
+ $columns = $columnModel->getList(1, true);
+ $this->assertCount(5, $columns);
+ $this->assertEquals('All columns', $columns[-1]);
+ $this->assertEquals('Backlog', $columns[1]);
+ $this->assertEquals('Ready', $columns[2]);
+ $this->assertEquals('Work in progress', $columns[3]);
+ $this->assertEquals('Done', $columns[4]);
+ }
+
+ public function testAddColumn()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertNotFalse($columnModel->create(1, 'another column'));
+ $this->assertNotFalse($columnModel->create(1, 'one more', 3, 'one more description'));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertTrue(is_array($columns));
+ $this->assertEquals(6, count($columns));
+
+ $this->assertEquals('another column', $columns[4]['title']);
+ $this->assertEquals(0, $columns[4]['task_limit']);
+ $this->assertEquals(5, $columns[4]['position']);
+
+ $this->assertEquals('one more', $columns[5]['title']);
+ $this->assertEquals(3, $columns[5]['task_limit']);
+ $this->assertEquals(6, $columns[5]['position']);
+ $this->assertEquals('one more description', $columns[5]['description']);
+ }
+
+ public function testUpdateColumn()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+
+ $this->assertTrue($columnModel->update(3, 'blah', 5));
+ $this->assertTrue($columnModel->update(2, 'boo'));
+
+ $column = $columnModel->getById(3);
+ $this->assertNotEmpty($column);
+ $this->assertEquals('blah', $column['title']);
+ $this->assertEquals(5, $column['task_limit']);
+
+ $column = $columnModel->getById(2);
+ $this->assertNotEmpty($column);
+ $this->assertEquals('boo', $column['title']);
+ $this->assertEquals(0, $column['task_limit']);
+ }
+
+ public function testRemoveColumn()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+ $this->assertTrue($columnModel->remove(3));
+ $this->assertFalse($columnModel->remove(322));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertTrue(is_array($columns));
+ $this->assertEquals(3, count($columns));
+ }
+
+ public function testChangePosition()
+ {
+ $projectModel = new Project($this->container);
+ $columnModel = new Column($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertEquals(1, $columns[0]['position']);
+ $this->assertEquals(1, $columns[0]['id']);
+ $this->assertEquals(2, $columns[1]['position']);
+ $this->assertEquals(2, $columns[1]['id']);
+ $this->assertEquals(3, $columns[2]['position']);
+ $this->assertEquals(3, $columns[2]['id']);
+
+ $this->assertTrue($columnModel->changePosition(1, 3, 2));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertEquals(1, $columns[0]['position']);
+ $this->assertEquals(1, $columns[0]['id']);
+ $this->assertEquals(2, $columns[1]['position']);
+ $this->assertEquals(3, $columns[1]['id']);
+ $this->assertEquals(3, $columns[2]['position']);
+ $this->assertEquals(2, $columns[2]['id']);
+
+ $this->assertTrue($columnModel->changePosition(1, 2, 1));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertEquals(1, $columns[0]['position']);
+ $this->assertEquals(2, $columns[0]['id']);
+ $this->assertEquals(2, $columns[1]['position']);
+ $this->assertEquals(1, $columns[1]['id']);
+ $this->assertEquals(3, $columns[2]['position']);
+ $this->assertEquals(3, $columns[2]['id']);
+
+ $this->assertTrue($columnModel->changePosition(1, 2, 2));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertEquals(1, $columns[0]['position']);
+ $this->assertEquals(1, $columns[0]['id']);
+ $this->assertEquals(2, $columns[1]['position']);
+ $this->assertEquals(2, $columns[1]['id']);
+ $this->assertEquals(3, $columns[2]['position']);
+ $this->assertEquals(3, $columns[2]['id']);
+
+ $this->assertTrue($columnModel->changePosition(1, 4, 1));
+
+ $columns = $columnModel->getAll(1);
+ $this->assertEquals(1, $columns[0]['position']);
+ $this->assertEquals(4, $columns[0]['id']);
+ $this->assertEquals(2, $columns[1]['position']);
+ $this->assertEquals(1, $columns[1]['id']);
+ $this->assertEquals(3, $columns[2]['position']);
+ $this->assertEquals(2, $columns[2]['id']);
+
+ $this->assertFalse($columnModel->changePosition(1, 2, 0));
+ $this->assertFalse($columnModel->changePosition(1, 2, 5));
+ }
+}
diff --git a/tests/units/Model/CommentTest.php b/tests/units/Model/CommentTest.php
index ec4e7a56..bb96e4f4 100644
--- a/tests/units/Model/CommentTest.php
+++ b/tests/units/Model/CommentTest.php
@@ -2,7 +2,6 @@
require_once __DIR__.'/../Base.php';
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\Project;
use Kanboard\Model\Comment;
diff --git a/tests/units/Model/ConfigTest.php b/tests/units/Model/ConfigTest.php
index 447c9238..6ccdbef9 100644
--- a/tests/units/Model/ConfigTest.php
+++ b/tests/units/Model/ConfigTest.php
@@ -3,7 +3,6 @@
require_once __DIR__.'/../Base.php';
use Kanboard\Model\Config;
-use Kanboard\Core\Session\SessionManager;
class ConfigTest extends Base
{
diff --git a/tests/units/Model/FileTest.php b/tests/units/Model/FileTest.php
deleted file mode 100644
index 29f6ee93..00000000
--- a/tests/units/Model/FileTest.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-
-require_once __DIR__.'/../Base.php';
-
-use Kanboard\Model\Task;
-use Kanboard\Model\File;
-use Kanboard\Model\TaskCreation;
-use Kanboard\Model\Project;
-
-class FileTest extends Base
-{
- public function setUp()
- {
- parent::setUp();
-
- $this->container['objectStorage'] = $this
- ->getMockBuilder('\Kanboard\Core\ObjectStorage\FileStorage')
- ->setConstructorArgs(array($this->container))
- ->setMethods(array('put', 'moveFile', 'remove'))
- ->getMock();
- }
-
- public function testCreation()
- {
- $p = new Project($this->container);
- $f = new File($this->container);
- $tc = new TaskCreation($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test')));
-
- $this->assertEquals(1, $f->create(1, 'test', '/tmp/foo', 10));
-
- $file = $f->getById(1);
- $this->assertNotEmpty($file);
- $this->assertEquals('test', $file['name']);
- $this->assertEquals('/tmp/foo', $file['path']);
- $this->assertEquals(0, $file['is_image']);
- $this->assertEquals(1, $file['task_id']);
- $this->assertEquals(time(), $file['date'], '', 2);
- $this->assertEquals(0, $file['user_id']);
- $this->assertEquals(10, $file['size']);
-
- $this->assertEquals(2, $f->create(1, 'test2.png', '/tmp/foobar', 10));
-
- $file = $f->getById(2);
- $this->assertNotEmpty($file);
- $this->assertEquals('test2.png', $file['name']);
- $this->assertEquals('/tmp/foobar', $file['path']);
- $this->assertEquals(1, $file['is_image']);
- }
-
- public function testCreationFileNameTooLong()
- {
- $p = new Project($this->container);
- $f = new File($this->container);
- $tc = new TaskCreation($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test')));
-
- $this->assertNotFalse($f->create(1, 'test', '/tmp/foo', 10));
- $this->assertNotFalse($f->create(1, str_repeat('a', 1000), '/tmp/foo', 10));
-
- $files = $f->getAll(1);
- $this->assertNotEmpty($files);
- $this->assertCount(2, $files);
-
- $this->assertEquals(str_repeat('a', 255), $files[0]['name']);
- $this->assertEquals('test', $files[1]['name']);
- }
-
- public function testIsImage()
- {
- $f = new File($this->container);
-
- $this->assertTrue($f->isImage('test.png'));
- $this->assertTrue($f->isImage('test.jpeg'));
- $this->assertTrue($f->isImage('test.gif'));
- $this->assertTrue($f->isImage('test.jpg'));
- $this->assertTrue($f->isImage('test.JPG'));
-
- $this->assertFalse($f->isImage('test.bmp'));
- $this->assertFalse($f->isImage('test'));
- $this->assertFalse($f->isImage('test.pdf'));
- }
-
- public function testGeneratePath()
- {
- $f = new File($this->container);
-
- $this->assertStringStartsWith('12'.DIRECTORY_SEPARATOR.'34'.DIRECTORY_SEPARATOR, $f->generatePath(12, 34, 'test.png'));
- $this->assertNotEquals($f->generatePath(12, 34, 'test1.png'), $f->generatePath(12, 34, 'test2.png'));
- }
-
- public function testUploadScreenshot()
- {
- $p = new Project($this->container);
- $tc = new TaskCreation($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test')));
-
- $data = base64_encode('image data');
-
- $f = $this
- ->getMockBuilder('\Kanboard\Model\File')
- ->setConstructorArgs(array($this->container))
- ->setMethods(array('generateThumbnailFromData'))
- ->getMock();
-
- $this->container['objectStorage']
- ->expects($this->once())
- ->method('put')
- ->with(
- $this->stringContains('1'.DIRECTORY_SEPARATOR.'1'.DIRECTORY_SEPARATOR),
- $this->equalTo(base64_decode($data))
- )
- ->will($this->returnValue(true));
-
- $f->expects($this->once())
- ->method('generateThumbnailFromData');
-
- $this->assertEquals(1, $f->uploadScreenshot(1, 1, $data));
-
- $file = $f->getById(1);
- $this->assertNotEmpty($file);
- $this->assertStringStartsWith('Screenshot taken ', $file['name']);
- $this->assertStringStartsWith('1'.DIRECTORY_SEPARATOR.'1'.DIRECTORY_SEPARATOR, $file['path']);
- $this->assertEquals(1, $file['is_image']);
- $this->assertEquals(1, $file['task_id']);
- $this->assertEquals(time(), $file['date'], '', 2);
- $this->assertEquals(0, $file['user_id']);
- $this->assertEquals(10, $file['size']);
- }
-
- public function testUploadFileContent()
- {
- $p = new Project($this->container);
- $f = new File($this->container);
- $tc = new TaskCreation($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test')));
-
- $data = base64_encode('file data');
-
- $this->container['objectStorage']
- ->expects($this->once())
- ->method('put')
- ->with(
- $this->stringContains('1'.DIRECTORY_SEPARATOR.'1'.DIRECTORY_SEPARATOR),
- $this->equalTo(base64_decode($data))
- )
- ->will($this->returnValue(true));
-
- $this->assertEquals(1, $f->uploadContent(1, 1, 'my file.pdf', $data));
-
- $file = $f->getById(1);
- $this->assertNotEmpty($file);
- $this->assertEquals('my file.pdf', $file['name']);
- $this->assertStringStartsWith('1'.DIRECTORY_SEPARATOR.'1'.DIRECTORY_SEPARATOR, $file['path']);
- $this->assertEquals(0, $file['is_image']);
- $this->assertEquals(1, $file['task_id']);
- $this->assertEquals(time(), $file['date'], '', 2);
- $this->assertEquals(0, $file['user_id']);
- $this->assertEquals(9, $file['size']);
- }
-
- public function testGetAll()
- {
- $p = new Project($this->container);
- $f = new File($this->container);
- $tc = new TaskCreation($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test')));
-
- $this->assertEquals(1, $f->create(1, 'B.pdf', '/tmp/foo', 10));
- $this->assertEquals(2, $f->create(1, 'A.png', '/tmp/foo', 10));
- $this->assertEquals(3, $f->create(1, 'D.doc', '/tmp/foo', 10));
- $this->assertEquals(4, $f->create(1, 'C.JPG', '/tmp/foo', 10));
-
- $files = $f->getAll(1);
- $this->assertNotEmpty($files);
- $this->assertCount(4, $files);
- $this->assertEquals('A.png', $files[0]['name']);
- $this->assertEquals('B.pdf', $files[1]['name']);
- $this->assertEquals('C.JPG', $files[2]['name']);
- $this->assertEquals('D.doc', $files[3]['name']);
-
- $files = $f->getAllImages(1);
- $this->assertNotEmpty($files);
- $this->assertCount(2, $files);
- $this->assertEquals('A.png', $files[0]['name']);
- $this->assertEquals('C.JPG', $files[1]['name']);
-
- $files = $f->getAllDocuments(1);
- $this->assertNotEmpty($files);
- $this->assertCount(2, $files);
- $this->assertEquals('B.pdf', $files[0]['name']);
- $this->assertEquals('D.doc', $files[1]['name']);
- }
-
- public function testRemove()
- {
- $p = new Project($this->container);
- $f = new File($this->container);
- $tc = new TaskCreation($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test')));
-
- $this->assertEquals(1, $f->create(1, 'B.pdf', DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo1', 10));
- $this->assertEquals(2, $f->create(1, 'A.png', DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo2', 10));
- $this->assertEquals(3, $f->create(1, 'D.doc', DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo3', 10));
-
- $this->container['objectStorage']
- ->expects($this->at(0))
- ->method('remove')
- ->with(
- $this->equalTo(DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo2')
- )
- ->will($this->returnValue(true));
-
- $this->container['objectStorage']
- ->expects($this->at(1))
- ->method('remove')
- ->with(
- $this->equalTo('thumbnails'.DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo2')
- )
- ->will($this->returnValue(true));
-
- $this->container['objectStorage']
- ->expects($this->at(2))
- ->method('remove')
- ->with(
- $this->equalTo(DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo1')
- )
- ->will($this->returnValue(true));
-
- $this->container['objectStorage']
- ->expects($this->at(3))
- ->method('remove')
- ->with(
- $this->equalTo(DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'foo3')
- )
- ->will($this->returnValue(true));
-
- $this->assertTrue($f->remove(2));
-
- $files = $f->getAll(1);
- $this->assertNotEmpty($files);
- $this->assertCount(2, $files);
- $this->assertEquals('B.pdf', $files[0]['name']);
- $this->assertEquals('D.doc', $files[1]['name']);
-
- $this->assertTrue($f->removeAll(1));
-
- $files = $f->getAll(1);
- $this->assertEmpty($files);
- }
-}
diff --git a/tests/units/Model/NotificationTest.php b/tests/units/Model/NotificationTest.php
index 7f9977ce..d5ec7735 100644
--- a/tests/units/Model/NotificationTest.php
+++ b/tests/units/Model/NotificationTest.php
@@ -6,8 +6,7 @@ use Kanboard\Model\TaskFinder;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\Subtask;
use Kanboard\Model\Comment;
-use Kanboard\Model\User;
-use Kanboard\Model\File;
+use Kanboard\Model\TaskFile;
use Kanboard\Model\Task;
use Kanboard\Model\Project;
use Kanboard\Model\Notification;
@@ -23,7 +22,7 @@ class NotificationTest extends Base
$tc = new TaskCreation($this->container);
$s = new Subtask($this->container);
$c = new Comment($this->container);
- $f = new File($this->container);
+ $f = new TaskFile($this->container);
$this->assertEquals(1, $p->create(array('name' => 'test')));
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1)));
diff --git a/tests/units/Model/ProjectActivityTest.php b/tests/units/Model/ProjectActivityTest.php
index 10201aa8..27ea039d 100644
--- a/tests/units/Model/ProjectActivityTest.php
+++ b/tests/units/Model/ProjectActivityTest.php
@@ -7,9 +7,6 @@ use Kanboard\Model\TaskFinder;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\ProjectActivity;
use Kanboard\Model\Project;
-use Kanboard\Model\Subtask;
-use Kanboard\Model\Comment;
-use Kanboard\Model\File;
class ProjectActivityTest extends Base
{
diff --git a/tests/units/Model/ProjectDailyColumnStatsTest.php b/tests/units/Model/ProjectDailyColumnStatsTest.php
index 5e8ec3e8..1a0e826c 100644
--- a/tests/units/Model/ProjectDailyColumnStatsTest.php
+++ b/tests/units/Model/ProjectDailyColumnStatsTest.php
@@ -7,7 +7,6 @@ use Kanboard\Model\ProjectDailyColumnStats;
use Kanboard\Model\Config;
use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
-use Kanboard\Model\TaskStatus;
class ProjectDailyColumnStatsTest extends Base
{
diff --git a/tests/units/Model/ProjectDailyStatsTest.php b/tests/units/Model/ProjectDailyStatsTest.php
index 9efdb199..c3b20cb9 100644
--- a/tests/units/Model/ProjectDailyStatsTest.php
+++ b/tests/units/Model/ProjectDailyStatsTest.php
@@ -4,7 +4,6 @@ require_once __DIR__.'/../Base.php';
use Kanboard\Model\Project;
use Kanboard\Model\ProjectDailyStats;
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskStatus;
@@ -43,6 +42,13 @@ class ProjectDailyStatsTest extends Base
)
);
- $this->assertEquals($expected, $metrics);
+ $this->assertEquals($expected[0]['day'], $metrics[0]['day']);
+ $this->assertEquals($expected[1]['day'], $metrics[1]['day']);
+
+ $this->assertEquals($expected[0]['avg_lead_time'], $metrics[0]['avg_lead_time'], '', 2);
+ $this->assertEquals($expected[1]['avg_lead_time'], $metrics[1]['avg_lead_time'], '', 2);
+
+ $this->assertEquals($expected[0]['avg_cycle_time'], $metrics[0]['avg_cycle_time'], '', 2);
+ $this->assertEquals($expected[1]['avg_cycle_time'], $metrics[1]['avg_cycle_time'], '', 2);
}
}
diff --git a/tests/units/Model/ProjectDuplicationTest.php b/tests/units/Model/ProjectDuplicationTest.php
index db5da525..ee5b4ce4 100644
--- a/tests/units/Model/ProjectDuplicationTest.php
+++ b/tests/units/Model/ProjectDuplicationTest.php
@@ -6,8 +6,11 @@ use Kanboard\Model\Action;
use Kanboard\Model\Project;
use Kanboard\Model\Category;
use Kanboard\Model\ProjectUserRole;
+use Kanboard\Model\ProjectGroupRole;
use Kanboard\Model\ProjectDuplication;
use Kanboard\Model\User;
+use Kanboard\Model\Group;
+use Kanboard\Model\GroupMember;
use Kanboard\Model\Swimlane;
use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
@@ -16,7 +19,14 @@ use Kanboard\Core\Security\Role;
class ProjectDuplicationTest extends Base
{
- public function testProjectName()
+ public function testGetSelections()
+ {
+ $projectDuplicationModel = new ProjectDuplication($this->container);
+ $this->assertCount(5, $projectDuplicationModel->getOptionalSelection());
+ $this->assertCount(6, $projectDuplicationModel->getPossibleSelection());
+ }
+
+ public function testGetClonedProjectName()
{
$pd = new ProjectDuplication($this->container);
@@ -29,54 +39,142 @@ class ProjectDuplicationTest extends Base
$this->assertEquals(str_repeat('a', 42).' (Clone)', $pd->getClonedProjectName(str_repeat('a', 60)));
}
- public function testCopyProjectWithLongName()
+ public function testClonePublicProject()
{
$p = new Project($this->container);
$pd = new ProjectDuplication($this->container);
- $this->assertEquals(1, $p->create(array('name' => str_repeat('a', 50))));
+ $this->assertEquals(1, $p->create(array('name' => 'Public')));
$this->assertEquals(2, $pd->duplicate(1));
$project = $p->getById(2);
$this->assertNotEmpty($project);
- $this->assertEquals(str_repeat('a', 42).' (Clone)', $project['name']);
+ $this->assertEquals('Public (Clone)', $project['name']);
+ $this->assertEquals(1, $project['is_active']);
+ $this->assertEquals(0, $project['is_private']);
+ $this->assertEquals(0, $project['is_public']);
+ $this->assertEquals(0, $project['owner_id']);
+ $this->assertEmpty($project['token']);
}
- public function testClonePublicProject()
+ public function testClonePrivateProject()
{
$p = new Project($this->container);
$pd = new ProjectDuplication($this->container);
+ $pp = new ProjectUserRole($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'Public')));
+ $this->assertEquals(1, $p->create(array('name' => 'Private', 'is_private' => 1), 1, true));
$this->assertEquals(2, $pd->duplicate(1));
$project = $p->getById(2);
$this->assertNotEmpty($project);
- $this->assertEquals('Public (Clone)', $project['name']);
- $this->assertEquals(0, $project['is_private']);
+ $this->assertEquals('Private (Clone)', $project['name']);
+ $this->assertEquals(1, $project['is_active']);
+ $this->assertEquals(1, $project['is_private']);
$this->assertEquals(0, $project['is_public']);
+ $this->assertEquals(0, $project['owner_id']);
$this->assertEmpty($project['token']);
+
+ $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(2, 1));
}
- public function testClonePrivateProject()
+ public function testCloneSharedProject()
{
$p = new Project($this->container);
$pd = new ProjectDuplication($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'Private', 'is_private' => 1), 1, true));
+ $this->assertEquals(1, $p->create(array('name' => 'Shared')));
+ $this->assertTrue($p->update(array('id' => 1, 'is_public' => 1, 'token' => 'test')));
+
+ $project = $p->getById(1);
+ $this->assertEquals('test', $project['token']);
+ $this->assertEquals(1, $project['is_public']);
+
$this->assertEquals(2, $pd->duplicate(1));
$project = $p->getById(2);
$this->assertNotEmpty($project);
- $this->assertEquals('Private (Clone)', $project['name']);
- $this->assertEquals(1, $project['is_private']);
+ $this->assertEquals('Shared (Clone)', $project['name']);
+ $this->assertEquals('', $project['token']);
$this->assertEquals(0, $project['is_public']);
- $this->assertEmpty($project['token']);
+ }
- $pp = new ProjectUserRole($this->container);
+ public function testCloneInactiveProject()
+ {
+ $p = new Project($this->container);
+ $pd = new ProjectDuplication($this->container);
+
+ $this->assertEquals(1, $p->create(array('name' => 'Inactive')));
+ $this->assertTrue($p->update(array('id' => 1, 'is_active' => 0)));
+
+ $project = $p->getById(1);
+ $this->assertEquals(0, $project['is_active']);
+
+ $this->assertEquals(2, $pd->duplicate(1));
+
+ $project = $p->getById(2);
+ $this->assertNotEmpty($project);
+ $this->assertEquals('Inactive (Clone)', $project['name']);
+ $this->assertEquals(1, $project['is_active']);
+ }
+
+ public function testCloneProjectWithOwner()
+ {
+ $p = new Project($this->container);
+ $pd = new ProjectDuplication($this->container);
+ $projectUserRoleModel = new ProjectUserRole($this->container);
+
+ $this->assertEquals(1, $p->create(array('name' => 'Owner')));
+
+ $project = $p->getById(1);
+ $this->assertEquals(0, $project['owner_id']);
+
+ $this->assertEquals(2, $pd->duplicate(1, array('projectPermission'), 1));
- $this->assertEquals(array(1 => 'admin'), $pp->getAssignableUsers(1));
- $this->assertEquals(array(1 => 'admin'), $pp->getAssignableUsers(2));
+ $project = $p->getById(2);
+ $this->assertNotEmpty($project);
+ $this->assertEquals('Owner (Clone)', $project['name']);
+ $this->assertEquals(1, $project['owner_id']);
+
+ $this->assertEquals(Role::PROJECT_MANAGER, $projectUserRoleModel->getUserRole(2, 1));
+ }
+
+ public function testCloneProjectWithDifferentName()
+ {
+ $p = new Project($this->container);
+ $pd = new ProjectDuplication($this->container);
+
+ $this->assertEquals(1, $p->create(array('name' => 'Owner')));
+
+ $project = $p->getById(1);
+ $this->assertEquals(0, $project['owner_id']);
+
+ $this->assertEquals(2, $pd->duplicate(1, array('projectPermission'), 1, 'Foobar'));
+
+ $project = $p->getById(2);
+ $this->assertNotEmpty($project);
+ $this->assertEquals('Foobar', $project['name']);
+ $this->assertEquals(1, $project['owner_id']);
+ }
+
+ public function testCloneProjectAndForceItToBePrivate()
+ {
+ $p = new Project($this->container);
+ $pd = new ProjectDuplication($this->container);
+
+ $this->assertEquals(1, $p->create(array('name' => 'Owner')));
+
+ $project = $p->getById(1);
+ $this->assertEquals(0, $project['owner_id']);
+ $this->assertEquals(0, $project['is_private']);
+
+ $this->assertEquals(2, $pd->duplicate(1, array('projectPermission'), 1, 'Foobar', true));
+
+ $project = $p->getById(2);
+ $this->assertNotEmpty($project);
+ $this->assertEquals('Foobar', $project['name']);
+ $this->assertEquals(1, $project['owner_id']);
+ $this->assertEquals(1, $project['is_private']);
}
public function testCloneProjectWithCategories()
@@ -98,16 +196,9 @@ class ProjectDuplicationTest extends Base
$this->assertEquals('P1 (Clone)', $project['name']);
$categories = $c->getAll(2);
- $this->assertNotempty($categories);
- $this->assertEquals(3, count($categories));
-
- $this->assertEquals(4, $categories[0]['id']);
+ $this->assertCount(3, $categories);
$this->assertEquals('C1', $categories[0]['name']);
-
- $this->assertEquals(5, $categories[1]['id']);
$this->assertEquals('C2', $categories[1]['name']);
-
- $this->assertEquals(6, $categories[2]['id']);
$this->assertEquals('C3', $categories[2]['name']);
}
@@ -119,28 +210,115 @@ class ProjectDuplicationTest extends Base
$u = new User($this->container);
$pd = new ProjectDuplication($this->container);
- $this->assertEquals(2, $u->create(array('username' => 'unittest1', 'password' => 'unittest')));
- $this->assertEquals(3, $u->create(array('username' => 'unittest2', 'password' => 'unittest')));
- $this->assertEquals(4, $u->create(array('username' => 'unittest3', 'password' => 'unittest')));
+ $this->assertEquals(2, $u->create(array('username' => 'user1')));
+ $this->assertEquals(3, $u->create(array('username' => 'user2')));
+ $this->assertEquals(4, $u->create(array('username' => 'user3')));
$this->assertEquals(1, $p->create(array('name' => 'P1')));
- $this->assertTrue($pp->addUser(1, 2, Role::PROJECT_MEMBER));
+
+ $this->assertTrue($pp->addUser(1, 2, Role::PROJECT_MANAGER));
$this->assertTrue($pp->addUser(1, 3, Role::PROJECT_MEMBER));
- $this->assertTrue($pp->addUser(1, 4, Role::PROJECT_MANAGER));
- $this->assertEquals(Role::PROJECT_MEMBER, $pp->getUserRole(1, 2));
- $this->assertEquals(Role::PROJECT_MEMBER, $pp->getUserRole(1, 3));
- $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(1, 4));
+ $this->assertTrue($pp->addUser(1, 4, Role::PROJECT_VIEWER));
$this->assertEquals(2, $pd->duplicate(1));
+ $this->assertCount(3, $pp->getUsers(2));
+ $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(2, 2));
+ $this->assertEquals(Role::PROJECT_MEMBER, $pp->getUserRole(2, 3));
+ $this->assertEquals(Role::PROJECT_VIEWER, $pp->getUserRole(2, 4));
+ }
+
+ public function testCloneProjectWithUsersAndOverrideOwner()
+ {
+ $p = new Project($this->container);
+ $c = new Category($this->container);
+ $pp = new ProjectUserRole($this->container);
+ $u = new User($this->container);
+ $pd = new ProjectDuplication($this->container);
+
+ $this->assertEquals(2, $u->create(array('username' => 'user1')));
+ $this->assertEquals(1, $p->create(array('name' => 'P1'), 2));
+
+ $project = $p->getById(1);
+ $this->assertEquals(2, $project['owner_id']);
+
+ $this->assertTrue($pp->addUser(1, 2, Role::PROJECT_MANAGER));
+ $this->assertTrue($pp->addUser(1, 1, Role::PROJECT_MEMBER));
+
+ $this->assertEquals(2, $pd->duplicate(1, array('projectPermission'), 1));
+
+ $this->assertCount(2, $pp->getUsers(2));
+ $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(2, 2));
+ $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(2, 1));
+
$project = $p->getById(2);
- $this->assertNotEmpty($project);
- $this->assertEquals('P1 (Clone)', $project['name']);
+ $this->assertEquals(1, $project['owner_id']);
+ }
- $this->assertEquals(3, count($pp->getUsers(2)));
- $this->assertEquals(Role::PROJECT_MEMBER, $pp->getUserRole(2, 2));
- $this->assertEquals(Role::PROJECT_MEMBER, $pp->getUserRole(2, 3));
- $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(2, 4));
+ public function testCloneTeamProjectToPrivatProject()
+ {
+ $p = new Project($this->container);
+ $c = new Category($this->container);
+ $pp = new ProjectUserRole($this->container);
+ $u = new User($this->container);
+ $pd = new ProjectDuplication($this->container);
+
+ $this->assertEquals(2, $u->create(array('username' => 'user1')));
+ $this->assertEquals(3, $u->create(array('username' => 'user2')));
+ $this->assertEquals(1, $p->create(array('name' => 'P1'), 2));
+
+ $project = $p->getById(1);
+ $this->assertEquals(2, $project['owner_id']);
+ $this->assertEquals(0, $project['is_private']);
+
+ $this->assertTrue($pp->addUser(1, 2, Role::PROJECT_MANAGER));
+ $this->assertTrue($pp->addUser(1, 1, Role::PROJECT_MEMBER));
+
+ $this->assertEquals(2, $pd->duplicate(1, array('projectPermission'), 3, 'My private project', true));
+
+ $this->assertCount(1, $pp->getUsers(2));
+ $this->assertEquals(Role::PROJECT_MANAGER, $pp->getUserRole(2, 3));
+
+ $project = $p->getById(2);
+ $this->assertEquals(3, $project['owner_id']);
+ $this->assertEquals(1, $project['is_private']);
+ }
+
+ public function testCloneProjectWithGroups()
+ {
+ $p = new Project($this->container);
+ $c = new Category($this->container);
+ $pd = new ProjectDuplication($this->container);
+ $userModel = new User($this->container);
+ $groupModel = new Group($this->container);
+ $groupMemberModel = new GroupMember($this->container);
+ $projectGroupRoleModel = new ProjectGroupRole($this->container);
+ $projectUserRoleModel = new ProjectUserRole($this->container);
+
+ $this->assertEquals(1, $p->create(array('name' => 'P1')));
+
+ $this->assertEquals(1, $groupModel->create('G1'));
+ $this->assertEquals(2, $groupModel->create('G2'));
+ $this->assertEquals(3, $groupModel->create('G3'));
+
+ $this->assertEquals(2, $userModel->create(array('username' => 'user1')));
+ $this->assertEquals(3, $userModel->create(array('username' => 'user2')));
+ $this->assertEquals(4, $userModel->create(array('username' => 'user3')));
+
+ $this->assertTrue($groupMemberModel->addUser(1, 2));
+ $this->assertTrue($groupMemberModel->addUser(2, 3));
+ $this->assertTrue($groupMemberModel->addUser(3, 4));
+
+ $this->assertTrue($projectGroupRoleModel->addGroup(1, 1, Role::PROJECT_MANAGER));
+ $this->assertTrue($projectGroupRoleModel->addGroup(1, 2, Role::PROJECT_MEMBER));
+ $this->assertTrue($projectGroupRoleModel->addGroup(1, 3, Role::PROJECT_VIEWER));
+
+ $this->assertEquals(2, $pd->duplicate(1));
+
+ $this->assertCount(3, $projectGroupRoleModel->getGroups(2));
+ $this->assertEquals(Role::PROJECT_MANAGER, $projectUserRoleModel->getUserRole(2, 2));
+ $this->assertEquals(Role::PROJECT_MEMBER, $projectUserRoleModel->getUserRole(2, 3));
+ $this->assertEquals(Role::PROJECT_VIEWER, $projectUserRoleModel->getUserRole(2, 4));
}
public function testCloneProjectWithActionTaskAssignCurrentUser()
@@ -199,7 +377,7 @@ class ProjectDuplicationTest extends Base
$this->assertEquals(5, $actions[0]['params']['category_id']);
}
- public function testCloneProjectWithSwimlanesAndTasks()
+ public function testCloneProjectWithSwimlanes()
{
$p = new Project($this->container);
$pd = new ProjectDuplication($this->container);
@@ -207,31 +385,22 @@ class ProjectDuplicationTest extends Base
$tc = new TaskCreation($this->container);
$tf = new TaskFinder($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'P1')));
+ $this->assertEquals(1, $p->create(array('name' => 'P1', 'default_swimlane' => 'New Default')));
// create initial swimlanes
$this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'S1')));
$this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'S2')));
$this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => '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' => 'T0', 'project_id' => 1, 'swimlane_id' => 0)));
+ $this->assertEquals(2, $tc->create(array('title' => 'T1', 'project_id' => 1, 'swimlane_id' => 1)));
+ $this->assertEquals(3, $tc->create(array('title' => 'T2', 'project_id' => 1, 'swimlane_id' => 2)));
+ $this->assertEquals(4, $tc->create(array('title' => 'T3', 'project_id' => 1, 'swimlane_id' => 3)));
- //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->assertNotFalse($pd->duplicate(1, array('category', 'action', 'swimlane', 'task')));
- $project = $p->getByName('P1 (Clone)');
- $this->assertNotFalse($project);
- $project_id = $project['id'];
-
- // Check if Swimlanes have been duplicated
- $swimlanes = $s->getAll($project_id);
+ $this->assertEquals(2, $pd->duplicate(1, array('category', 'swimlane')));
+ $swimlanes = $s->getAll(2);
$this->assertCount(3, $swimlanes);
$this->assertEquals(4, $swimlanes[0]['id']);
$this->assertEquals('S1', $swimlanes[0]['name']);
@@ -239,29 +408,15 @@ class ProjectDuplicationTest extends Base
$this->assertEquals('S2', $swimlanes[1]['name']);
$this->assertEquals(6, $swimlanes[2]['id']);
$this->assertEquals('S3', $swimlanes[2]['name']);
- $new_default = $s->getDefault($project_id);
- $this->assertEquals('New Default', $new_default['default_swimlane']);
-
- // Check if Tasks have been duplicated
- $tasks = $tf->getAll($project_id);
+ $swimlane = $s->getDefault(2);
+ $this->assertEquals('New Default', $swimlane['default_swimlane']);
- $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']);
-
- $p->remove($project_id);
-
- $this->assertFalse($p->exists($project_id));
- $this->assertCount(0, $s->getAll($project_id));
- $this->assertCount(0, $tf->getAll($project_id));
+ // Check if tasks are NOT been duplicated
+ $this->assertCount(0, $tf->getAll(2));
}
- public function testCloneProjectWithSwimlanes()
+ public function testCloneProjectWithTasks()
{
$p = new Project($this->container);
$pd = new ProjectDuplication($this->container);
@@ -271,43 +426,22 @@ class ProjectDuplicationTest extends Base
$this->assertEquals(1, $p->create(array('name' => 'P1')));
- // create initial swimlanes
- $this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'S1')));
- $this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'S2')));
- $this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'S3')));
+ // create initial tasks
+ $this->assertEquals(1, $tc->create(array('title' => 'T1', 'project_id' => 1, 'column_id' => 1)));
+ $this->assertEquals(2, $tc->create(array('title' => 'T2', 'project_id' => 1, 'column_id' => 2)));
+ $this->assertEquals(3, $tc->create(array('title' => 'T3', 'project_id' => 1, 'column_id' => 3)));
- $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->assertNotFalse($pd->duplicate(1, array('category', 'action', 'swimlane')));
- $project = $p->getByName('P1 (Clone)');
- $this->assertNotFalse($project);
- $project_id = $project['id'];
-
- $swimlanes = $s->getAll($project_id);
-
- $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']);
- $new_default = $s->getDefault($project_id);
- $this->assertEquals('New Default', $new_default['default_swimlane']);
+ $this->assertEquals(2, $pd->duplicate(1, array('category', 'action', 'task')));
- // Check if Tasks have NOT been duplicated
- $this->assertCount(0, $tf->getAll($project_id));
+ // Check if Tasks have been duplicated
+ $tasks = $tf->getAll(2);
+ $this->assertCount(3, $tasks);
+ $this->assertEquals('T1', $tasks[0]['title']);
+ $this->assertEquals('T2', $tasks[1]['title']);
+ $this->assertEquals('T3', $tasks[2]['title']);
}
- public function testCloneProjectWithTasks()
+ public function testCloneProjectWithSwimlanesAndTasks()
{
$p = new Project($this->container);
$pd = new ProjectDuplication($this->container);
@@ -315,40 +449,39 @@ class ProjectDuplicationTest extends Base
$tc = new TaskCreation($this->container);
$tf = new TaskFinder($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'P1')));
+ $this->assertEquals(1, $p->create(array('name' => 'P1', 'default_swimlane' => 'New Default')));
// create initial swimlanes
$this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'S1')));
$this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'S2')));
$this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'S3')));
- $default_swimlane1 = $s->getDefault(1);
- $default_swimlane1['default_swimlane'] = 'New Default';
-
- $this->assertTrue($s->updateDefault($default_swimlane1));
-
- //create initial tasks
+ // 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->assertNotFalse($pd->duplicate(1, array('category', 'action', 'task')));
- $project = $p->getByName('P1 (Clone)');
- $this->assertNotFalse($project);
- $project_id = $project['id'];
+ $this->assertEquals(2, $pd->duplicate(1, array('projectPermission', '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']);
- // Check if Swimlanes have NOT been duplicated
- $this->assertCount(0, $s->getAll($project_id));
+ $swimlane = $s->getDefault(2);
+ $this->assertEquals('New Default', $swimlane['default_swimlane']);
// Check if Tasks have been duplicated
- $tasks = $tf->getAll($project_id);
+ $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/Model/ProjectFileTest.php b/tests/units/Model/ProjectFileTest.php
new file mode 100644
index 00000000..d9b37fbe
--- /dev/null
+++ b/tests/units/Model/ProjectFileTest.php
@@ -0,0 +1,311 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Kanboard\Model\ProjectFile;
+use Kanboard\Model\Project;
+
+class ProjectFileTest extends Base
+{
+ public function testCreation()
+ {
+ $projectModel = new Project($this->container);
+ $fileModel = new ProjectFile($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'test', '/tmp/foo', 10));
+
+ $file = $fileModel->getById(1);
+ $this->assertEquals('test', $file['name']);
+ $this->assertEquals('/tmp/foo', $file['path']);
+ $this->assertEquals(0, $file['is_image']);
+ $this->assertEquals(1, $file['project_id']);
+ $this->assertEquals(time(), $file['date'], '', 2);
+ $this->assertEquals(0, $file['user_id']);
+ $this->assertEquals(10, $file['size']);
+
+ $this->assertEquals(2, $fileModel->create(1, 'test2.png', '/tmp/foobar', 10));
+
+ $file = $fileModel->getById(2);
+ $this->assertEquals('test2.png', $file['name']);
+ $this->assertEquals('/tmp/foobar', $file['path']);
+ $this->assertEquals(1, $file['is_image']);
+ }
+
+ public function testCreationWithFileNameTooLong()
+ {
+ $projectModel = new Project($this->container);
+ $fileModel = new ProjectFile($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+
+ $this->assertNotFalse($fileModel->create(1, 'test', '/tmp/foo', 10));
+ $this->assertNotFalse($fileModel->create(1, str_repeat('a', 1000), '/tmp/foo', 10));
+
+ $files = $fileModel->getAll(1);
+ $this->assertNotEmpty($files);
+ $this->assertCount(2, $files);
+
+ $this->assertEquals(str_repeat('a', 255), $files[0]['name']);
+ $this->assertEquals('test', $files[1]['name']);
+ }
+
+ public function testCreationWithSessionOpen()
+ {
+ $this->container['sessionStorage']->user = array('id' => 1);
+
+ $projectModel = new Project($this->container);
+ $fileModel = new ProjectFile($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'test', '/tmp/foo', 10));
+
+ $file = $fileModel->getById(1);
+ $this->assertEquals('test', $file['name']);
+ $this->assertEquals(1, $file['user_id']);
+ }
+
+ public function testGetAll()
+ {
+ $projectModel = new Project($this->container);
+ $fileModel = new ProjectFile($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+
+ $this->assertEquals(1, $fileModel->create(1, 'B.pdf', '/tmp/foo', 10));
+ $this->assertEquals(2, $fileModel->create(1, 'A.png', '/tmp/foo', 10));
+ $this->assertEquals(3, $fileModel->create(1, 'D.doc', '/tmp/foo', 10));
+ $this->assertEquals(4, $fileModel->create(1, 'C.JPG', '/tmp/foo', 10));
+
+ $fileModeliles = $fileModel->getAll(1);
+ $this->assertNotEmpty($fileModeliles);
+ $this->assertCount(4, $fileModeliles);
+ $this->assertEquals('A.png', $fileModeliles[0]['name']);
+ $this->assertEquals('B.pdf', $fileModeliles[1]['name']);
+ $this->assertEquals('C.JPG', $fileModeliles[2]['name']);
+ $this->assertEquals('D.doc', $fileModeliles[3]['name']);
+
+ $fileModeliles = $fileModel->getAllImages(1);
+ $this->assertNotEmpty($fileModeliles);
+ $this->assertCount(2, $fileModeliles);
+ $this->assertEquals('A.png', $fileModeliles[0]['name']);
+ $this->assertEquals('C.JPG', $fileModeliles[1]['name']);
+
+ $fileModeliles = $fileModel->getAllDocuments(1);
+ $this->assertNotEmpty($fileModeliles);
+ $this->assertCount(2, $fileModeliles);
+ $this->assertEquals('B.pdf', $fileModeliles[0]['name']);
+ $this->assertEquals('D.doc', $fileModeliles[1]['name']);
+ }
+
+ public function testGetThumbnailPath()
+ {
+ $fileModel = new ProjectFile($this->container);
+ $this->assertEquals('thumbnails'.DIRECTORY_SEPARATOR.'test', $fileModel->getThumbnailPath('test'));
+ }
+
+ public function testGeneratePath()
+ {
+ $fileModel = new ProjectFile($this->container);
+
+ $this->assertStringStartsWith('projects'.DIRECTORY_SEPARATOR.'34'.DIRECTORY_SEPARATOR, $fileModel->generatePath(34, 'test.png'));
+ $this->assertNotEquals($fileModel->generatePath(34, 'test1.png'), $fileModel->generatePath(34, 'test2.png'));
+ }
+
+ public function testUploadFiles()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\ProjectFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+
+ $files = array(
+ 'name' => array(
+ 'file1.png',
+ 'file2.doc',
+ ),
+ 'tmp_name' => array(
+ '/tmp/phpYzdqkD',
+ '/tmp/phpeEwEWG',
+ ),
+ 'error' => array(
+ UPLOAD_ERR_OK,
+ UPLOAD_ERR_OK,
+ ),
+ 'size' => array(
+ 123,
+ 456,
+ ),
+ );
+
+ $fileModel
+ ->expects($this->once())
+ ->method('generateThumbnailFromFile');
+
+ $this->container['objectStorage']
+ ->expects($this->at(0))
+ ->method('moveUploadedFile')
+ ->with($this->equalTo('/tmp/phpYzdqkD'), $this->anything());
+
+ $this->container['objectStorage']
+ ->expects($this->at(1))
+ ->method('moveUploadedFile')
+ ->with($this->equalTo('/tmp/phpeEwEWG'), $this->anything());
+
+ $this->assertTrue($fileModel->uploadFiles(1, $files));
+
+ $files = $fileModel->getAll(1);
+ $this->assertCount(2, $files);
+
+ $this->assertEquals(1, $files[0]['id']);
+ $this->assertEquals('file1.png', $files[0]['name']);
+ $this->assertEquals(1, $files[0]['is_image']);
+ $this->assertEquals(1, $files[0]['project_id']);
+ $this->assertEquals(0, $files[0]['user_id']);
+ $this->assertEquals(123, $files[0]['size']);
+ $this->assertEquals(time(), $files[0]['date'], '', 2);
+
+ $this->assertEquals(2, $files[1]['id']);
+ $this->assertEquals('file2.doc', $files[1]['name']);
+ $this->assertEquals(0, $files[1]['is_image']);
+ $this->assertEquals(1, $files[1]['project_id']);
+ $this->assertEquals(0, $files[1]['user_id']);
+ $this->assertEquals(456, $files[1]['size']);
+ $this->assertEquals(time(), $files[1]['date'], '', 2);
+ }
+
+ public function testUploadFilesWithEmptyFiles()
+ {
+ $fileModel = new ProjectFile($this->container);
+ $this->assertFalse($fileModel->uploadFiles(1, array()));
+ }
+
+ public function testUploadFilesWithUploadError()
+ {
+ $files = array(
+ 'name' => array(
+ 'file1.png',
+ 'file2.doc',
+ ),
+ 'tmp_name' => array(
+ '',
+ '/tmp/phpeEwEWG',
+ ),
+ 'error' => array(
+ UPLOAD_ERR_CANT_WRITE,
+ UPLOAD_ERR_OK,
+ ),
+ 'size' => array(
+ 123,
+ 456,
+ ),
+ );
+
+ $fileModel = new ProjectFile($this->container);
+ $this->assertFalse($fileModel->uploadFiles(1, $files));
+ }
+
+ public function testUploadFilesWithObjectStorageError()
+ {
+ $files = array(
+ 'name' => array(
+ 'file1.csv',
+ 'file2.doc',
+ ),
+ 'tmp_name' => array(
+ '/tmp/phpYzdqkD',
+ '/tmp/phpeEwEWG',
+ ),
+ 'error' => array(
+ UPLOAD_ERR_OK,
+ UPLOAD_ERR_OK,
+ ),
+ 'size' => array(
+ 123,
+ 456,
+ ),
+ );
+
+ $this->container['objectStorage']
+ ->expects($this->at(0))
+ ->method('moveUploadedFile')
+ ->with($this->equalTo('/tmp/phpYzdqkD'), $this->anything())
+ ->will($this->throwException(new \Kanboard\Core\ObjectStorage\ObjectStorageException('test')));
+
+ $fileModel = new ProjectFile($this->container);
+ $this->assertFalse($fileModel->uploadFiles(1, $files));
+ }
+
+ public function testUploadFileContent()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\ProjectFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+ $data = 'test';
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('put')
+ ->with($this->anything(), $this->equalTo($data));
+
+ $this->assertEquals(1, $fileModel->uploadContent(1, 'test.doc', base64_encode($data)));
+
+ $files = $fileModel->getAll(1);
+ $this->assertCount(1, $files);
+
+ $this->assertEquals(1, $files[0]['id']);
+ $this->assertEquals('test.doc', $files[0]['name']);
+ $this->assertEquals(0, $files[0]['is_image']);
+ $this->assertEquals(1, $files[0]['project_id']);
+ $this->assertEquals(0, $files[0]['user_id']);
+ $this->assertEquals(4, $files[0]['size']);
+ $this->assertEquals(time(), $files[0]['date'], '', 2);
+ }
+
+ public function testUploadImageContent()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\ProjectFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+ $data = 'test';
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+
+ $fileModel
+ ->expects($this->once())
+ ->method('generateThumbnailFromFile');
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('put')
+ ->with($this->anything(), $this->equalTo($data));
+
+ $this->assertEquals(1, $fileModel->uploadContent(1, 'test.png', base64_encode($data)));
+
+ $files = $fileModel->getAll(1);
+ $this->assertCount(1, $files);
+
+ $this->assertEquals(1, $files[0]['id']);
+ $this->assertEquals('test.png', $files[0]['name']);
+ $this->assertEquals(1, $files[0]['is_image']);
+ $this->assertEquals(1, $files[0]['project_id']);
+ $this->assertEquals(0, $files[0]['user_id']);
+ $this->assertEquals(4, $files[0]['size']);
+ $this->assertEquals(time(), $files[0]['date'], '', 2);
+ }
+}
diff --git a/tests/units/Model/ProjectGroupRoleTest.php b/tests/units/Model/ProjectGroupRoleTest.php
index 29a9536b..e38e812a 100644
--- a/tests/units/Model/ProjectGroupRoleTest.php
+++ b/tests/units/Model/ProjectGroupRoleTest.php
@@ -204,6 +204,44 @@ class ProjectGroupRoleTest extends Base
$this->assertEquals('', $users[1]['name']);
}
+ public function testGetAssignableUsersWithDisabledUsers()
+ {
+ $userModel = new User($this->container);
+ $projectModel = new Project($this->container);
+ $groupModel = new Group($this->container);
+ $groupMemberModel = new GroupMember($this->container);
+ $groupRoleModel = new ProjectGroupRole($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1')));
+ $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2')));
+
+ $this->assertEquals(2, $userModel->create(array('username' => 'user 1', 'name' => 'User #1')));
+ $this->assertEquals(3, $userModel->create(array('username' => 'user 2', 'is_active' => 0)));
+ $this->assertEquals(4, $userModel->create(array('username' => 'user 3')));
+
+ $this->assertEquals(1, $groupModel->create('Group A'));
+ $this->assertEquals(2, $groupModel->create('Group B'));
+ $this->assertEquals(3, $groupModel->create('Group C'));
+
+ $this->assertTrue($groupMemberModel->addUser(1, 4));
+ $this->assertTrue($groupMemberModel->addUser(2, 3));
+ $this->assertTrue($groupMemberModel->addUser(3, 2));
+
+ $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER));
+ $this->assertTrue($groupRoleModel->addGroup(1, 2, Role::PROJECT_MEMBER));
+ $this->assertTrue($groupRoleModel->addGroup(1, 3, Role::PROJECT_MANAGER));
+
+ $users = $groupRoleModel->getAssignableUsers(2);
+ $this->assertCount(0, $users);
+
+ $users = $groupRoleModel->getAssignableUsers(1);
+ $this->assertCount(1, $users);
+
+ $this->assertEquals(2, $users[0]['id']);
+ $this->assertEquals('user 1', $users[0]['username']);
+ $this->assertEquals('User #1', $users[0]['name']);
+ }
+
public function testGetProjectsByUser()
{
$userModel = new User($this->container);
diff --git a/tests/units/Model/ProjectPermissionTest.php b/tests/units/Model/ProjectPermissionTest.php
index 035a1246..10fcdcc2 100644
--- a/tests/units/Model/ProjectPermissionTest.php
+++ b/tests/units/Model/ProjectPermissionTest.php
@@ -192,6 +192,28 @@ class ProjectPermissionTest extends Base
$this->assertFalse($projectPermission->isAssignable(2, 5));
}
+ public function testIsAssignableWhenUserIsDisabled()
+ {
+ $userModel = new User($this->container);
+ $projectModel = new Project($this->container);
+ $groupModel = new Group($this->container);
+ $groupRoleModel = new ProjectGroupRole($this->container);
+ $groupMemberModel = new GroupMember($this->container);
+ $userRoleModel = new ProjectUserRole($this->container);
+ $projectPermission = new ProjectPermission($this->container);
+
+ $this->assertEquals(2, $userModel->create(array('username' => 'user 1')));
+ $this->assertEquals(3, $userModel->create(array('username' => 'user 2', 'is_active' => 0)));
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1')));
+
+ $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER));
+ $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER));
+
+ $this->assertTrue($projectPermission->isAssignable(1, 2));
+ $this->assertFalse($projectPermission->isAssignable(1, 3));
+ }
+
public function testIsMember()
{
$userModel = new User($this->container);
diff --git a/tests/units/Model/ProjectTest.php b/tests/units/Model/ProjectTest.php
index cadb42a6..5478fa40 100644
--- a/tests/units/Model/ProjectTest.php
+++ b/tests/units/Model/ProjectTest.php
@@ -8,8 +8,6 @@ use Kanboard\Model\Project;
use Kanboard\Model\User;
use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
-use Kanboard\Model\Acl;
-use Kanboard\Model\Board;
use Kanboard\Model\Config;
use Kanboard\Model\Category;
diff --git a/tests/units/Model/ProjectUserRoleTest.php b/tests/units/Model/ProjectUserRoleTest.php
index c6b4eb7c..06cd1b70 100644
--- a/tests/units/Model/ProjectUserRoleTest.php
+++ b/tests/units/Model/ProjectUserRoleTest.php
@@ -8,6 +8,7 @@ use Kanboard\Model\Group;
use Kanboard\Model\GroupMember;
use Kanboard\Model\ProjectGroupRole;
use Kanboard\Model\ProjectUserRole;
+use Kanboard\Model\ProjectPermission;
use Kanboard\Core\Security\Role;
class ProjectUserRoleTest extends Base
@@ -100,6 +101,36 @@ class ProjectUserRoleTest extends Base
$this->assertEquals('', $userRoleModel->getUserRole(1, 2));
}
+ public function testGetAssignableUsersWithDisabledUsers()
+ {
+ $projectModel = new Project($this->container);
+ $userModel = new User($this->container);
+ $userRoleModel = new ProjectUserRole($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
+ $this->assertEquals(2, $userModel->create(array('username' => 'user1', 'name' => 'User1')));
+ $this->assertEquals(3, $userModel->create(array('username' => 'user2', 'name' => 'User2')));
+
+ $this->assertTrue($userRoleModel->addUser(1, 1, Role::PROJECT_MEMBER));
+ $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER));
+ $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER));
+
+ $users = $userRoleModel->getAssignableUsers(1);
+ $this->assertCount(3, $users);
+
+ $this->assertEquals('admin', $users[1]);
+ $this->assertEquals('User1', $users[2]);
+ $this->assertEquals('User2', $users[3]);
+
+ $this->assertTrue($userModel->disable(2));
+
+ $users = $userRoleModel->getAssignableUsers(1);
+ $this->assertCount(2, $users);
+
+ $this->assertEquals('admin', $users[1]);
+ $this->assertEquals('User2', $users[3]);
+ }
+
public function testGetAssignableUsersWithoutGroups()
{
$projectModel = new Project($this->container);
@@ -219,6 +250,36 @@ class ProjectUserRoleTest extends Base
$this->assertEquals('User4', $users[5]);
}
+ public function testGetAssignableUsersWithDisabledUsersAndEverybodyAllowed()
+ {
+ $projectModel = new Project($this->container);
+ $projectPermission = new ProjectPermission($this->container);
+ $userModel = new User($this->container);
+ $userRoleModel = new ProjectUserRole($this->container);
+
+ $this->assertEquals(2, $userModel->create(array('username' => 'user1', 'name' => 'User1')));
+ $this->assertEquals(3, $userModel->create(array('username' => 'user2', 'name' => 'User2')));
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1', 'is_everybody_allowed' => 1)));
+
+ $this->assertTrue($projectPermission->isEverybodyAllowed(1));
+
+ $users = $userRoleModel->getAssignableUsers(1);
+ $this->assertCount(3, $users);
+
+ $this->assertEquals('admin', $users[1]);
+ $this->assertEquals('User1', $users[2]);
+ $this->assertEquals('User2', $users[3]);
+
+ $this->assertTrue($userModel->disable(2));
+
+ $users = $userRoleModel->getAssignableUsers(1);
+ $this->assertCount(2, $users);
+
+ $this->assertEquals('admin', $users[1]);
+ $this->assertEquals('User2', $users[3]);
+ }
+
public function testGetProjectsByUser()
{
$userModel = new User($this->container);
diff --git a/tests/units/Model/SubtaskTest.php b/tests/units/Model/SubtaskTest.php
index 9be2dff4..eb9747d4 100644
--- a/tests/units/Model/SubtaskTest.php
+++ b/tests/units/Model/SubtaskTest.php
@@ -2,12 +2,9 @@
require_once __DIR__.'/../Base.php';
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\Subtask;
use Kanboard\Model\Project;
-use Kanboard\Model\Category;
-use Kanboard\Model\User;
use Kanboard\Core\User\UserSession;
class SubtaskTest extends Base
@@ -159,7 +156,7 @@ class SubtaskTest extends Base
$this->assertEquals(0, $subtask['user_id']);
$this->assertEquals(1, $subtask['task_id']);
- $this->assertTrue($s->toggleStatus(1));
+ $this->assertEquals(Subtask::STATUS_INPROGRESS, $s->toggleStatus(1));
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
@@ -167,7 +164,7 @@ class SubtaskTest extends Base
$this->assertEquals(0, $subtask['user_id']);
$this->assertEquals(1, $subtask['task_id']);
- $this->assertTrue($s->toggleStatus(1));
+ $this->assertEquals(Subtask::STATUS_DONE, $s->toggleStatus(1));
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
@@ -175,7 +172,7 @@ class SubtaskTest extends Base
$this->assertEquals(0, $subtask['user_id']);
$this->assertEquals(1, $subtask['task_id']);
- $this->assertTrue($s->toggleStatus(1));
+ $this->assertEquals(Subtask::STATUS_TODO, $s->toggleStatus(1));
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
@@ -205,7 +202,7 @@ class SubtaskTest extends Base
// Set the current logged user
$this->container['sessionStorage']->user = array('id' => 1);
- $this->assertTrue($s->toggleStatus(1));
+ $this->assertEquals(Subtask::STATUS_INPROGRESS, $s->toggleStatus(1));
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
@@ -213,7 +210,7 @@ class SubtaskTest extends Base
$this->assertEquals(1, $subtask['user_id']);
$this->assertEquals(1, $subtask['task_id']);
- $this->assertTrue($s->toggleStatus(1));
+ $this->assertEquals(Subtask::STATUS_DONE, $s->toggleStatus(1));
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
@@ -221,7 +218,7 @@ class SubtaskTest extends Base
$this->assertEquals(1, $subtask['user_id']);
$this->assertEquals(1, $subtask['task_id']);
- $this->assertTrue($s->toggleStatus(1));
+ $this->assertEquals(Subtask::STATUS_TODO, $s->toggleStatus(1));
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
@@ -252,117 +249,6 @@ class SubtaskTest extends Base
}
}
- public function testMoveUp()
- {
- $tc = new TaskCreation($this->container);
- $s = new Subtask($this->container);
- $p = new Project($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test1')));
- $this->assertEquals(1, $tc->create(array('title' => 'test 1', 'project_id' => 1)));
-
- $this->assertEquals(1, $s->create(array('title' => 'subtask #1', 'task_id' => 1)));
- $this->assertEquals(2, $s->create(array('title' => 'subtask #2', 'task_id' => 1)));
- $this->assertEquals(3, $s->create(array('title' => 'subtask #3', 'task_id' => 1)));
-
- // Check positions
- $subtask = $s->getById(1);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(1, $subtask['position']);
-
- $subtask = $s->getById(2);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(2, $subtask['position']);
-
- $subtask = $s->getById(3);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(3, $subtask['position']);
-
- // Move up
- $this->assertTrue($s->moveUp(1, 2));
-
- // Check positions
- $subtask = $s->getById(1);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(2, $subtask['position']);
-
- $subtask = $s->getById(2);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(1, $subtask['position']);
-
- $subtask = $s->getById(3);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(3, $subtask['position']);
-
- // We can't move up #2
- $this->assertFalse($s->moveUp(1, 2));
-
- // Test remove
- $this->assertTrue($s->remove(1));
- $this->assertTrue($s->moveUp(1, 3));
-
- // Check positions
- $subtask = $s->getById(1);
- $this->assertEmpty($subtask);
-
- $subtask = $s->getById(2);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(2, $subtask['position']);
-
- $subtask = $s->getById(3);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(1, $subtask['position']);
- }
-
- public function testMoveDown()
- {
- $tc = new TaskCreation($this->container);
- $s = new Subtask($this->container);
- $p = new Project($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test1')));
- $this->assertEquals(1, $tc->create(array('title' => 'test 1', 'project_id' => 1)));
-
- $this->assertEquals(1, $s->create(array('title' => 'subtask #1', 'task_id' => 1)));
- $this->assertEquals(2, $s->create(array('title' => 'subtask #2', 'task_id' => 1)));
- $this->assertEquals(3, $s->create(array('title' => 'subtask #3', 'task_id' => 1)));
-
- // Move down #1
- $this->assertTrue($s->moveDown(1, 1));
-
- // Check positions
- $subtask = $s->getById(1);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(2, $subtask['position']);
-
- $subtask = $s->getById(2);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(1, $subtask['position']);
-
- $subtask = $s->getById(3);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(3, $subtask['position']);
-
- // We can't move down #3
- $this->assertFalse($s->moveDown(1, 3));
-
- // Test remove
- $this->assertTrue($s->remove(1));
- $this->assertTrue($s->moveDown(1, 2));
-
- // Check positions
- $subtask = $s->getById(1);
- $this->assertEmpty($subtask);
-
- $subtask = $s->getById(2);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(2, $subtask['position']);
-
- $subtask = $s->getById(3);
- $this->assertNotEmpty($subtask);
- $this->assertEquals(1, $subtask['position']);
- }
-
public function testDuplicate()
{
$tc = new TaskCreation($this->container);
@@ -409,4 +295,69 @@ class SubtaskTest extends Base
$this->assertEquals(1, $subtasks[0]['position']);
$this->assertEquals(2, $subtasks[1]['position']);
}
+
+ public function testChangePosition()
+ {
+ $taskCreationModel = new TaskCreation($this->container);
+ $subtaskModel = new Subtask($this->container);
+ $projectModel = new Project($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'test 1', 'project_id' => 1)));
+
+ $this->assertEquals(1, $subtaskModel->create(array('title' => 'subtask #1', 'task_id' => 1)));
+ $this->assertEquals(2, $subtaskModel->create(array('title' => 'subtask #2', 'task_id' => 1)));
+ $this->assertEquals(3, $subtaskModel->create(array('title' => 'subtask #3', 'task_id' => 1)));
+
+ $subtasks = $subtaskModel->getAll(1);
+ $this->assertEquals(1, $subtasks[0]['position']);
+ $this->assertEquals(1, $subtasks[0]['id']);
+ $this->assertEquals(2, $subtasks[1]['position']);
+ $this->assertEquals(2, $subtasks[1]['id']);
+ $this->assertEquals(3, $subtasks[2]['position']);
+ $this->assertEquals(3, $subtasks[2]['id']);
+
+ $this->assertTrue($subtaskModel->changePosition(1, 3, 2));
+
+ $subtasks = $subtaskModel->getAll(1);
+ $this->assertEquals(1, $subtasks[0]['position']);
+ $this->assertEquals(1, $subtasks[0]['id']);
+ $this->assertEquals(2, $subtasks[1]['position']);
+ $this->assertEquals(3, $subtasks[1]['id']);
+ $this->assertEquals(3, $subtasks[2]['position']);
+ $this->assertEquals(2, $subtasks[2]['id']);
+
+ $this->assertTrue($subtaskModel->changePosition(1, 2, 1));
+
+ $subtasks = $subtaskModel->getAll(1);
+ $this->assertEquals(1, $subtasks[0]['position']);
+ $this->assertEquals(2, $subtasks[0]['id']);
+ $this->assertEquals(2, $subtasks[1]['position']);
+ $this->assertEquals(1, $subtasks[1]['id']);
+ $this->assertEquals(3, $subtasks[2]['position']);
+ $this->assertEquals(3, $subtasks[2]['id']);
+
+ $this->assertTrue($subtaskModel->changePosition(1, 2, 2));
+
+ $subtasks = $subtaskModel->getAll(1);
+ $this->assertEquals(1, $subtasks[0]['position']);
+ $this->assertEquals(1, $subtasks[0]['id']);
+ $this->assertEquals(2, $subtasks[1]['position']);
+ $this->assertEquals(2, $subtasks[1]['id']);
+ $this->assertEquals(3, $subtasks[2]['position']);
+ $this->assertEquals(3, $subtasks[2]['id']);
+
+ $this->assertTrue($subtaskModel->changePosition(1, 1, 3));
+
+ $subtasks = $subtaskModel->getAll(1);
+ $this->assertEquals(1, $subtasks[0]['position']);
+ $this->assertEquals(2, $subtasks[0]['id']);
+ $this->assertEquals(2, $subtasks[1]['position']);
+ $this->assertEquals(3, $subtasks[1]['id']);
+ $this->assertEquals(3, $subtasks[2]['position']);
+ $this->assertEquals(1, $subtasks[2]['id']);
+
+ $this->assertFalse($subtaskModel->changePosition(1, 2, 0));
+ $this->assertFalse($subtaskModel->changePosition(1, 2, 4));
+ }
}
diff --git a/tests/units/Model/SubtaskTimeTrackingTest.php b/tests/units/Model/SubtaskTimeTrackingTest.php
index 40461eea..9fa8d5b0 100644
--- a/tests/units/Model/SubtaskTimeTrackingTest.php
+++ b/tests/units/Model/SubtaskTimeTrackingTest.php
@@ -7,8 +7,6 @@ use Kanboard\Model\TaskCreation;
use Kanboard\Model\Subtask;
use Kanboard\Model\SubtaskTimeTracking;
use Kanboard\Model\Project;
-use Kanboard\Model\Category;
-use Kanboard\Model\User;
class SubtaskTimeTrackingTest extends Base
{
diff --git a/tests/units/Model/SwimlaneTest.php b/tests/units/Model/SwimlaneTest.php
index 3d048abd..71c13e40 100644
--- a/tests/units/Model/SwimlaneTest.php
+++ b/tests/units/Model/SwimlaneTest.php
@@ -3,7 +3,6 @@
require_once __DIR__.'/../Base.php';
use Kanboard\Model\Project;
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
use Kanboard\Model\Swimlane;
@@ -86,7 +85,23 @@ class SwimlaneTest extends Base
$this->assertEquals(0, $default['show_default_swimlane']);
}
- public function testDisable()
+ public function testDisableEnableDefaultSwimlane()
+ {
+ $projectModel = new Project($this->container);
+ $swimlaneModel = new Swimlane($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
+
+ $this->assertTrue($swimlaneModel->disableDefault(1));
+ $default = $swimlaneModel->getDefault(1);
+ $this->assertEquals(0, $default['show_default_swimlane']);
+
+ $this->assertTrue($swimlaneModel->enableDefault(1));
+ $default = $swimlaneModel->getDefault(1);
+ $this->assertEquals(1, $default['show_default_swimlane']);
+ }
+
+ public function testDisableEnable()
{
$p = new Project($this->container);
$s = new Swimlane($this->container);
@@ -210,200 +225,123 @@ class SwimlaneTest extends Base
$this->assertEquals(1, $swimlane['position']);
}
- public function testMoveUp()
+ public function testDuplicateSwimlane()
{
$p = new Project($this->container);
$s = new Swimlane($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest')));
- $this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
- $this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
- $this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'Swimlane #3')));
-
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
-
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
-
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(3, $swimlane['position']);
-
- // Move the swimlane 3 up
- $this->assertTrue($s->moveUp(1, 3));
-
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
-
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(3, $swimlane['position']);
-
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
-
- // First swimlane can be moved up
- $this->assertFalse($s->moveUp(1, 1));
-
- // Move with a disabled swimlane
- $this->assertTrue($s->disable(1, 1));
-
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(0, $swimlane['is_active']);
- $this->assertEquals(0, $swimlane['position']);
-
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
+ $this->assertEquals(1, $p->create(array('name' => 'P1')));
+ $this->assertEquals(2, $p->create(array('name' => 'P2')));
+ $this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'S1')));
+ $this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'S2')));
+ $this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'S3')));
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
+ $default_swimlane1 = $s->getDefault(1);
+ $default_swimlane1['default_swimlane'] = 'New Default';
- // Move the 2nd swimlane up
- $this->assertTrue($s->moveUp(1, 2));
+ $this->assertTrue($s->updateDefault($default_swimlane1));
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(0, $swimlane['is_active']);
- $this->assertEquals(0, $swimlane['position']);
+ $this->assertTrue($s->duplicate(1, 2));
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
+ $swimlanes = $s->getAll(2);
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
+ $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']);
+ $new_default = $s->getDefault(2);
+ $this->assertEquals('New Default', $new_default['default_swimlane']);
}
- public function testMoveDown()
+ public function testChangePosition()
{
- $p = new Project($this->container);
- $s = new Swimlane($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'UnitTest')));
- $this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
- $this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
- $this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'Swimlane #3')));
-
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
-
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
-
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(3, $swimlane['position']);
-
- // Move the swimlane 1 down
- $this->assertTrue($s->moveDown(1, 1));
+ $projectModel = new Project($this->container);
+ $swimlaneModel = new Swimlane($this->container);
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
-
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+ $this->assertEquals(1, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
+ $this->assertEquals(2, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
+ $this->assertEquals(3, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #3')));
+ $this->assertEquals(4, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #4')));
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(3, $swimlane['position']);
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
+ $this->assertEquals(1, $swimlanes[0]['id']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(2, $swimlanes[1]['id']);
+ $this->assertEquals(3, $swimlanes[2]['position']);
+ $this->assertEquals(3, $swimlanes[2]['id']);
- // Last swimlane can be moved down
- $this->assertFalse($s->moveDown(1, 3));
+ $this->assertTrue($swimlaneModel->changePosition(1, 3, 2));
- // Move with a disabled swimlane
- $this->assertTrue($s->disable(1, 3));
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
+ $this->assertEquals(1, $swimlanes[0]['id']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(3, $swimlanes[1]['id']);
+ $this->assertEquals(3, $swimlanes[2]['position']);
+ $this->assertEquals(2, $swimlanes[2]['id']);
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
+ $this->assertTrue($swimlaneModel->changePosition(1, 2, 1));
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
+ $this->assertEquals(2, $swimlanes[0]['id']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(1, $swimlanes[1]['id']);
+ $this->assertEquals(3, $swimlanes[2]['position']);
+ $this->assertEquals(3, $swimlanes[2]['id']);
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(0, $swimlane['is_active']);
- $this->assertEquals(0, $swimlane['position']);
+ $this->assertTrue($swimlaneModel->changePosition(1, 2, 2));
- // Move the 2st swimlane down
- $this->assertTrue($s->moveDown(1, 2));
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
+ $this->assertEquals(1, $swimlanes[0]['id']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(2, $swimlanes[1]['id']);
+ $this->assertEquals(3, $swimlanes[2]['position']);
+ $this->assertEquals(3, $swimlanes[2]['id']);
- $swimlane = $s->getById(1);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(1, $swimlane['position']);
+ $this->assertTrue($swimlaneModel->changePosition(1, 4, 1));
- $swimlane = $s->getById(2);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(1, $swimlane['is_active']);
- $this->assertEquals(2, $swimlane['position']);
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
+ $this->assertEquals(4, $swimlanes[0]['id']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(1, $swimlanes[1]['id']);
+ $this->assertEquals(3, $swimlanes[2]['position']);
+ $this->assertEquals(2, $swimlanes[2]['id']);
- $swimlane = $s->getById(3);
- $this->assertNotEmpty($swimlane);
- $this->assertEquals(0, $swimlane['is_active']);
- $this->assertEquals(0, $swimlane['position']);
+ $this->assertFalse($swimlaneModel->changePosition(1, 2, 0));
+ $this->assertFalse($swimlaneModel->changePosition(1, 2, 5));
}
- public function testDuplicateSwimlane()
+ public function testChangePositionWithInactiveSwimlane()
{
- $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(array('project_id' => 1, 'name' => 'S1')));
- $this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'S2')));
- $this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'S3')));
-
- $default_swimlane1 = $s->getDefault(1);
- $default_swimlane1['default_swimlane'] = 'New Default';
+ $projectModel = new Project($this->container);
+ $swimlaneModel = new Swimlane($this->container);
- $this->assertTrue($s->updateDefault($default_swimlane1));
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+ $this->assertEquals(1, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
+ $this->assertEquals(2, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #2', 'is_active' => 0)));
+ $this->assertEquals(3, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #3', 'is_active' => 0)));
+ $this->assertEquals(4, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #4')));
- $this->assertTrue($s->duplicate(1, 2));
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
+ $this->assertEquals(1, $swimlanes[0]['id']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(4, $swimlanes[1]['id']);
- $swimlanes = $s->getAll(2);
+ $this->assertTrue($swimlaneModel->changePosition(1, 4, 1));
- $this->assertCount(3, $swimlanes);
+ $swimlanes = $swimlaneModel->getAllByStatus(1);
+ $this->assertEquals(1, $swimlanes[0]['position']);
$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']);
- $new_default = $s->getDefault(2);
- $this->assertEquals('New Default', $new_default['default_swimlane']);
+ $this->assertEquals(2, $swimlanes[1]['position']);
+ $this->assertEquals(1, $swimlanes[1]['id']);
}
}
diff --git a/tests/units/Model/TaskCreationTest.php b/tests/units/Model/TaskCreationTest.php
index 19b3b0d1..04d23930 100644
--- a/tests/units/Model/TaskCreationTest.php
+++ b/tests/units/Model/TaskCreationTest.php
@@ -6,7 +6,6 @@ use Kanboard\Model\Config;
use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
-use Kanboard\Model\TaskStatus;
use Kanboard\Model\Project;
class TaskCreationTest extends Base
@@ -295,7 +294,7 @@ class TaskCreationTest extends Base
$task = $tf->getById(2);
$this->assertNotEmpty($task);
$this->assertEquals(2, $task['id']);
- $this->assertEquals($timestamp, $task['date_due']);
+ $this->assertEquals(date('Y-m-d 00:00', $timestamp), date('Y-m-d 00:00', $task['date_due']));
$task = $tf->getById(3);
$this->assertEquals(3, $task['id']);
@@ -422,6 +421,6 @@ class TaskCreationTest extends Base
$task = $tf->getById(1);
$this->assertNotEmpty($task);
- $this->assertEquals('2050-01-10 12:30', date('Y-m-d H:i', $task['date_due']));
+ $this->assertEquals('2050-01-10 00:00', date('Y-m-d H:i', $task['date_due']));
}
}
diff --git a/tests/units/Model/TaskDuplicationTest.php b/tests/units/Model/TaskDuplicationTest.php
index 798b3835..c4b36e45 100644
--- a/tests/units/Model/TaskDuplicationTest.php
+++ b/tests/units/Model/TaskDuplicationTest.php
@@ -2,11 +2,11 @@
require_once __DIR__.'/../Base.php';
+use Kanboard\Core\DateParser;
use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskDuplication;
use Kanboard\Model\TaskFinder;
-use Kanboard\Model\TaskStatus;
use Kanboard\Model\Project;
use Kanboard\Model\ProjectUserRole;
use Kanboard\Model\Category;
@@ -57,8 +57,8 @@ class TaskDuplicationTest extends Base
// Some categories
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1)));
$this->assertNotFalse($c->create(array('name' => 'Category #2', 'project_id' => 1)));
- $this->assertTrue($c->exists(1, 1));
- $this->assertTrue($c->exists(2, 1));
+ $this->assertTrue($c->exists(1));
+ $this->assertTrue($c->exists(2));
$this->assertEquals(
1,
@@ -110,7 +110,7 @@ class TaskDuplicationTest extends Base
$this->assertEquals(2, $p->create(array('name' => 'test2')));
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1)));
- $this->assertTrue($c->exists(1, 1));
+ $this->assertTrue($c->exists(1));
// We create a task
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 2, 'owner_id' => 1, 'category_id' => 1)));
@@ -151,8 +151,8 @@ class TaskDuplicationTest extends Base
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1)));
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 2)));
- $this->assertTrue($c->exists(1, 1));
- $this->assertTrue($c->exists(2, 2));
+ $this->assertTrue($c->exists(1));
+ $this->assertTrue($c->exists(2));
// We create a task
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 2, 'category_id' => 1)));
@@ -187,9 +187,9 @@ class TaskDuplicationTest extends Base
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1)));
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 2)));
$this->assertNotFalse($c->create(array('name' => 'Category #2', 'project_id' => 2)));
- $this->assertTrue($c->exists(1, 1));
- $this->assertTrue($c->exists(2, 2));
- $this->assertTrue($c->exists(3, 2));
+ $this->assertTrue($c->exists(1));
+ $this->assertTrue($c->exists(2));
+ $this->assertTrue($c->exists(3));
// We create a task
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 2, 'category_id' => 1)));
@@ -468,8 +468,8 @@ class TaskDuplicationTest extends Base
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1)));
$this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 2)));
- $this->assertTrue($c->exists(1, 1));
- $this->assertTrue($c->exists(2, 2));
+ $this->assertTrue($c->exists(1));
+ $this->assertTrue($c->exists(2));
// We create a task
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 2, 'category_id' => 1)));
@@ -665,6 +665,7 @@ class TaskDuplicationTest extends Base
$tf = new TaskFinder($this->container);
$p = new Project($this->container);
$c = new Category($this->container);
+ $dp = new DateParser($this->container);
$this->assertEquals(1, $p->create(array('name' => 'test1')));
@@ -685,7 +686,7 @@ class TaskDuplicationTest extends Base
$this->assertNotEmpty($task);
$this->assertEquals(Task::RECURRING_STATUS_PROCESSED, $task['recurrence_status']);
$this->assertEquals(2, $task['recurrence_child']);
- $this->assertEquals(1436561776, $task['date_due'], '', 2);
+ $this->assertEquals(1436486400, $task['date_due'], '', 2);
$task = $tf->getById(2);
$this->assertNotEmpty($task);
@@ -695,6 +696,6 @@ class TaskDuplicationTest extends Base
$this->assertEquals(Task::RECURRING_BASEDATE_TRIGGERDATE, $task['recurrence_basedate']);
$this->assertEquals(1, $task['recurrence_parent']);
$this->assertEquals(2, $task['recurrence_factor']);
- $this->assertEquals(strtotime('+2 days'), $task['date_due'], '', 2);
+ $this->assertEquals($dp->removeTimeFromTimestamp(strtotime('+2 days')), $task['date_due'], '', 2);
}
}
diff --git a/tests/units/Model/TaskExportTest.php b/tests/units/Model/TaskExportTest.php
deleted file mode 100644
index b40b0771..00000000
--- a/tests/units/Model/TaskExportTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-require_once __DIR__.'/../Base.php';
-
-use Kanboard\Model\Task;
-use Kanboard\Model\TaskCreation;
-use Kanboard\Model\TaskExport;
-use Kanboard\Model\Project;
-use Kanboard\Model\Category;
-use Kanboard\Model\User;
-use Kanboard\Model\Swimlane;
-
-class TaskExportTest extends Base
-{
- public function testExport()
- {
- $tc = new TaskCreation($this->container);
- $p = new Project($this->container);
- $c = new Category($this->container);
- $e = new TaskExport($this->container);
- $s = new Swimlane($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'Export Project')));
-
- $this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'S1')));
- $this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'S2')));
-
- $this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1)));
- $this->assertNotFalse($c->create(array('name' => 'Category #2', 'project_id' => 1)));
- $this->assertNotFalse($c->create(array('name' => 'Category #3', 'project_id' => 1)));
-
- for ($i = 1; $i <= 100; $i++) {
- $task = array(
- 'title' => 'Task #'.$i,
- 'project_id' => 1,
- 'column_id' => rand(1, 3),
- 'creator_id' => rand(0, 1),
- 'owner_id' => rand(0, 1),
- 'color_id' => rand(0, 1) === 0 ? 'green' : 'purple',
- 'category_id' => rand(0, 3),
- 'date_due' => array_rand(array(0, date('Y-m-d'), date('Y-m-d', strtotime('+'.$i.'day')))),
- 'score' => rand(0, 21),
- 'swimlane_id' => rand(0, 2),
- );
-
- $this->assertEquals($i, $tc->create($task));
- }
-
- $rows = $e->export(1, strtotime('-1 day'), strtotime('+1 day'));
-
- $this->assertEquals($i, count($rows));
- $this->assertEquals('Task Id', $rows[0][0]);
- $this->assertEquals(1, $rows[1][0]);
- $this->assertEquals('Task #'.($i - 1), $rows[$i - 1][13]);
- $this->assertTrue(in_array($rows[$i - 1][4], array('Default swimlane', 'S1', 'S2')));
- }
-}
diff --git a/tests/units/Model/TaskExternalLinkTest.php b/tests/units/Model/TaskExternalLinkTest.php
new file mode 100644
index 00000000..28ccab83
--- /dev/null
+++ b/tests/units/Model/TaskExternalLinkTest.php
@@ -0,0 +1,123 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Kanboard\Model\TaskCreation;
+use Kanboard\Model\Project;
+use Kanboard\Model\TaskExternalLink;
+use Kanboard\Core\ExternalLink\ExternalLinkManager;
+use Kanboard\ExternalLink\WebLinkProvider;
+
+class TaskExternalLinkTest extends Base
+{
+ public function testCreate()
+ {
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskExternalLinkModel = new TaskExternalLink($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Test', 'project_id' => 1)));
+ $this->assertEquals(1, $taskExternalLinkModel->create(array('task_id' => 1, 'id' => '', 'url' => 'http://kanboard.net/', 'title' => 'My website', 'link_type' => 'weblink', 'dependency' => 'related')));
+
+ $link = $taskExternalLinkModel->getById(1);
+ $this->assertNotEmpty($link);
+ $this->assertEquals('My website', $link['title']);
+ $this->assertEquals('http://kanboard.net/', $link['url']);
+ $this->assertEquals('related', $link['dependency']);
+ $this->assertEquals('weblink', $link['link_type']);
+ $this->assertEquals(0, $link['creator_id']);
+ $this->assertEquals(time(), $link['date_modification'], '', 2);
+ $this->assertEquals(time(), $link['date_creation'], '', 2);
+ }
+
+ public function testCreateWithUserSession()
+ {
+ $this->container['sessionStorage']->user = array('id' => 1);
+
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskExternalLinkModel = new TaskExternalLink($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Test', 'project_id' => 1)));
+ $this->assertEquals(1, $taskExternalLinkModel->create(array('task_id' => 1, 'id' => '', 'url' => 'http://kanboard.net/', 'title' => 'My website', 'link_type' => 'weblink', 'dependency' => 'related')));
+
+ $link = $taskExternalLinkModel->getById(1);
+ $this->assertNotEmpty($link);
+ $this->assertEquals('My website', $link['title']);
+ $this->assertEquals('http://kanboard.net/', $link['url']);
+ $this->assertEquals('related', $link['dependency']);
+ $this->assertEquals('weblink', $link['link_type']);
+ $this->assertEquals(1, $link['creator_id']);
+ $this->assertEquals(time(), $link['date_modification'], '', 2);
+ $this->assertEquals(time(), $link['date_creation'], '', 2);
+ }
+
+ public function testModification()
+ {
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskExternalLinkModel = new TaskExternalLink($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Test', 'project_id' => 1)));
+ $this->assertEquals(1, $taskExternalLinkModel->create(array('task_id' => 1, 'id' => '', 'url' => 'http://kanboard.net/', 'title' => 'My website', 'link_type' => 'weblink', 'dependency' => 'related')));
+
+ sleep(1);
+
+ $this->assertTrue($taskExternalLinkModel->update(array('id' => 1, 'url' => 'https://kanboard.net/')));
+
+ $link = $taskExternalLinkModel->getById(1);
+ $this->assertNotEmpty($link);
+ $this->assertEquals('https://kanboard.net/', $link['url']);
+ $this->assertEquals(time(), $link['date_modification'], '', 2);
+ }
+
+ public function testRemove()
+ {
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskExternalLinkModel = new TaskExternalLink($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Test', 'project_id' => 1)));
+ $this->assertEquals(1, $taskExternalLinkModel->create(array('task_id' => 1, 'id' => '', 'url' => 'http://kanboard.net/', 'title' => 'My website', 'link_type' => 'weblink', 'dependency' => 'related')));
+
+ $this->assertTrue($taskExternalLinkModel->remove(1));
+ $this->assertFalse($taskExternalLinkModel->remove(1));
+
+ $this->assertEmpty($taskExternalLinkModel->getById(1));
+ }
+
+ public function testGetAll()
+ {
+ $this->container['sessionStorage']->user = array('id' => 1);
+ $this->container['externalLinkManager'] = new ExternalLinkManager($this->container);
+
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $taskExternalLinkModel = new TaskExternalLink($this->container);
+ $webLinkProvider = new WebLinkProvider($this->container);
+
+ $this->container['externalLinkManager']->register($webLinkProvider);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('title' => 'Test', 'project_id' => 1)));
+ $this->assertEquals(1, $taskExternalLinkModel->create(array('task_id' => 1, 'url' => 'https://miniflux.net/', 'title' => 'MX', 'link_type' => 'weblink', 'dependency' => 'related')));
+ $this->assertEquals(2, $taskExternalLinkModel->create(array('task_id' => 1, 'url' => 'http://kanboard.net/', 'title' => 'KB', 'link_type' => 'weblink', 'dependency' => 'related')));
+
+ $links = $taskExternalLinkModel->getAll(1);
+ $this->assertCount(2, $links);
+ $this->assertEquals('KB', $links[0]['title']);
+ $this->assertEquals('MX', $links[1]['title']);
+ $this->assertEquals('Web Link', $links[0]['type']);
+ $this->assertEquals('Web Link', $links[1]['type']);
+ $this->assertEquals('Related', $links[0]['dependency_label']);
+ $this->assertEquals('Related', $links[1]['dependency_label']);
+ $this->assertEquals('admin', $links[0]['creator_username']);
+ $this->assertEquals('admin', $links[1]['creator_username']);
+ $this->assertEquals('', $links[0]['creator_name']);
+ $this->assertEquals('', $links[1]['creator_name']);
+ }
+}
diff --git a/tests/units/Model/TaskFileTest.php b/tests/units/Model/TaskFileTest.php
new file mode 100644
index 00000000..b900e8f3
--- /dev/null
+++ b/tests/units/Model/TaskFileTest.php
@@ -0,0 +1,445 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Kanboard\Model\TaskFile;
+use Kanboard\Model\TaskCreation;
+use Kanboard\Model\Project;
+
+class TaskFileTest extends Base
+{
+ public function testCreation()
+ {
+ $projectModel = new Project($this->container);
+ $fileModel = new TaskFile($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $this->assertEquals(1, $fileModel->create(1, 'test', '/tmp/foo', 10));
+
+ $file = $fileModel->getById(1);
+ $this->assertEquals('test', $file['name']);
+ $this->assertEquals('/tmp/foo', $file['path']);
+ $this->assertEquals(0, $file['is_image']);
+ $this->assertEquals(1, $file['task_id']);
+ $this->assertEquals(time(), $file['date'], '', 2);
+ $this->assertEquals(0, $file['user_id']);
+ $this->assertEquals(10, $file['size']);
+
+ $this->assertEquals(2, $fileModel->create(1, 'test2.png', '/tmp/foobar', 10));
+
+ $file = $fileModel->getById(2);
+ $this->assertEquals('test2.png', $file['name']);
+ $this->assertEquals('/tmp/foobar', $file['path']);
+ $this->assertEquals(1, $file['is_image']);
+ }
+
+ public function testCreationWithFileNameTooLong()
+ {
+ $projectModel = new Project($this->container);
+ $fileModel = new TaskFile($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $this->assertNotFalse($fileModel->create(1, 'test', '/tmp/foo', 10));
+ $this->assertNotFalse($fileModel->create(1, str_repeat('a', 1000), '/tmp/foo', 10));
+
+ $files = $fileModel->getAll(1);
+ $this->assertNotEmpty($files);
+ $this->assertCount(2, $files);
+
+ $this->assertEquals(str_repeat('a', 255), $files[0]['name']);
+ $this->assertEquals('test', $files[1]['name']);
+ }
+
+ public function testCreationWithSessionOpen()
+ {
+ $this->container['sessionStorage']->user = array('id' => 1);
+
+ $projectModel = new Project($this->container);
+ $fileModel = new TaskFile($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'test', '/tmp/foo', 10));
+
+ $file = $fileModel->getById(1);
+ $this->assertEquals('test', $file['name']);
+ $this->assertEquals(1, $file['user_id']);
+ }
+
+ public function testGetAll()
+ {
+ $projectModel = new Project($this->container);
+ $fileModel = new TaskFile($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $this->assertEquals(1, $fileModel->create(1, 'B.pdf', '/tmp/foo', 10));
+ $this->assertEquals(2, $fileModel->create(1, 'A.png', '/tmp/foo', 10));
+ $this->assertEquals(3, $fileModel->create(1, 'D.doc', '/tmp/foo', 10));
+ $this->assertEquals(4, $fileModel->create(1, 'C.JPG', '/tmp/foo', 10));
+
+ $fileModeliles = $fileModel->getAll(1);
+ $this->assertNotEmpty($fileModeliles);
+ $this->assertCount(4, $fileModeliles);
+ $this->assertEquals('A.png', $fileModeliles[0]['name']);
+ $this->assertEquals('B.pdf', $fileModeliles[1]['name']);
+ $this->assertEquals('C.JPG', $fileModeliles[2]['name']);
+ $this->assertEquals('D.doc', $fileModeliles[3]['name']);
+
+ $fileModeliles = $fileModel->getAllImages(1);
+ $this->assertNotEmpty($fileModeliles);
+ $this->assertCount(2, $fileModeliles);
+ $this->assertEquals('A.png', $fileModeliles[0]['name']);
+ $this->assertEquals('C.JPG', $fileModeliles[1]['name']);
+
+ $fileModeliles = $fileModel->getAllDocuments(1);
+ $this->assertNotEmpty($fileModeliles);
+ $this->assertCount(2, $fileModeliles);
+ $this->assertEquals('B.pdf', $fileModeliles[0]['name']);
+ $this->assertEquals('D.doc', $fileModeliles[1]['name']);
+ }
+
+ public function testIsImage()
+ {
+ $fileModel = new TaskFile($this->container);
+
+ $this->assertTrue($fileModel->isImage('test.png'));
+ $this->assertTrue($fileModel->isImage('test.jpeg'));
+ $this->assertTrue($fileModel->isImage('test.gif'));
+ $this->assertTrue($fileModel->isImage('test.jpg'));
+ $this->assertTrue($fileModel->isImage('test.JPG'));
+
+ $this->assertFalse($fileModel->isImage('test.bmp'));
+ $this->assertFalse($fileModel->isImage('test'));
+ $this->assertFalse($fileModel->isImage('test.pdf'));
+ }
+
+ public function testGetThumbnailPath()
+ {
+ $fileModel = new TaskFile($this->container);
+ $this->assertEquals('thumbnails'.DIRECTORY_SEPARATOR.'test', $fileModel->getThumbnailPath('test'));
+ }
+
+ public function testGeneratePath()
+ {
+ $fileModel = new TaskFile($this->container);
+
+ $this->assertStringStartsWith('tasks'.DIRECTORY_SEPARATOR.'34'.DIRECTORY_SEPARATOR, $fileModel->generatePath(34, 'test.png'));
+ $this->assertNotEquals($fileModel->generatePath(34, 'test1.png'), $fileModel->generatePath(34, 'test2.png'));
+ }
+
+ public function testUploadFiles()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\TaskFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $files = array(
+ 'name' => array(
+ 'file1.png',
+ 'file2.doc',
+ ),
+ 'tmp_name' => array(
+ '/tmp/phpYzdqkD',
+ '/tmp/phpeEwEWG',
+ ),
+ 'error' => array(
+ UPLOAD_ERR_OK,
+ UPLOAD_ERR_OK,
+ ),
+ 'size' => array(
+ 123,
+ 456,
+ ),
+ );
+
+ $fileModel
+ ->expects($this->once())
+ ->method('generateThumbnailFromFile');
+
+ $this->container['objectStorage']
+ ->expects($this->at(0))
+ ->method('moveUploadedFile')
+ ->with($this->equalTo('/tmp/phpYzdqkD'), $this->anything());
+
+ $this->container['objectStorage']
+ ->expects($this->at(1))
+ ->method('moveUploadedFile')
+ ->with($this->equalTo('/tmp/phpeEwEWG'), $this->anything());
+
+ $this->assertTrue($fileModel->uploadFiles(1, $files));
+
+ $files = $fileModel->getAll(1);
+ $this->assertCount(2, $files);
+
+ $this->assertEquals(1, $files[0]['id']);
+ $this->assertEquals('file1.png', $files[0]['name']);
+ $this->assertEquals(1, $files[0]['is_image']);
+ $this->assertEquals(1, $files[0]['task_id']);
+ $this->assertEquals(0, $files[0]['user_id']);
+ $this->assertEquals(123, $files[0]['size']);
+ $this->assertEquals(time(), $files[0]['date'], '', 2);
+
+ $this->assertEquals(2, $files[1]['id']);
+ $this->assertEquals('file2.doc', $files[1]['name']);
+ $this->assertEquals(0, $files[1]['is_image']);
+ $this->assertEquals(1, $files[1]['task_id']);
+ $this->assertEquals(0, $files[1]['user_id']);
+ $this->assertEquals(456, $files[1]['size']);
+ $this->assertEquals(time(), $files[1]['date'], '', 2);
+ }
+
+ public function testUploadFilesWithEmptyFiles()
+ {
+ $fileModel = new TaskFile($this->container);
+ $this->assertFalse($fileModel->uploadFiles(1, array()));
+ }
+
+ public function testUploadFilesWithUploadError()
+ {
+ $files = array(
+ 'name' => array(
+ 'file1.png',
+ 'file2.doc',
+ ),
+ 'tmp_name' => array(
+ '',
+ '/tmp/phpeEwEWG',
+ ),
+ 'error' => array(
+ UPLOAD_ERR_CANT_WRITE,
+ UPLOAD_ERR_OK,
+ ),
+ 'size' => array(
+ 123,
+ 456,
+ ),
+ );
+
+ $fileModel = new TaskFile($this->container);
+ $this->assertFalse($fileModel->uploadFiles(1, $files));
+ }
+
+ public function testUploadFilesWithObjectStorageError()
+ {
+ $files = array(
+ 'name' => array(
+ 'file1.csv',
+ 'file2.doc',
+ ),
+ 'tmp_name' => array(
+ '/tmp/phpYzdqkD',
+ '/tmp/phpeEwEWG',
+ ),
+ 'error' => array(
+ UPLOAD_ERR_OK,
+ UPLOAD_ERR_OK,
+ ),
+ 'size' => array(
+ 123,
+ 456,
+ ),
+ );
+
+ $this->container['objectStorage']
+ ->expects($this->at(0))
+ ->method('moveUploadedFile')
+ ->with($this->equalTo('/tmp/phpYzdqkD'), $this->anything())
+ ->will($this->throwException(new \Kanboard\Core\ObjectStorage\ObjectStorageException('test')));
+
+ $fileModel = new TaskFile($this->container);
+ $this->assertFalse($fileModel->uploadFiles(1, $files));
+ }
+
+ public function testUploadFileContent()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\TaskFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $data = 'test';
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('put')
+ ->with($this->anything(), $this->equalTo($data));
+
+ $this->assertEquals(1, $fileModel->uploadContent(1, 'test.doc', base64_encode($data)));
+
+ $files = $fileModel->getAll(1);
+ $this->assertCount(1, $files);
+
+ $this->assertEquals(1, $files[0]['id']);
+ $this->assertEquals('test.doc', $files[0]['name']);
+ $this->assertEquals(0, $files[0]['is_image']);
+ $this->assertEquals(1, $files[0]['task_id']);
+ $this->assertEquals(0, $files[0]['user_id']);
+ $this->assertEquals(4, $files[0]['size']);
+ $this->assertEquals(time(), $files[0]['date'], '', 2);
+ }
+
+ public function testUploadFileContentWithObjectStorageError()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\TaskFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $data = 'test';
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('put')
+ ->with($this->anything(), $this->equalTo($data))
+ ->will($this->throwException(new \Kanboard\Core\ObjectStorage\ObjectStorageException('test')));
+
+ $this->assertFalse($fileModel->uploadContent(1, 'test.doc', base64_encode($data)));
+ }
+
+ public function testUploadScreenshot()
+ {
+ $fileModel = $this
+ ->getMockBuilder('\Kanboard\Model\TaskFile')
+ ->setConstructorArgs(array($this->container))
+ ->setMethods(array('generateThumbnailFromFile'))
+ ->getMock();
+
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $data = 'test';
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $fileModel
+ ->expects($this->once())
+ ->method('generateThumbnailFromFile');
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('put')
+ ->with($this->anything(), $this->equalTo($data));
+
+ $this->assertEquals(1, $fileModel->uploadScreenshot(1, base64_encode($data)));
+
+ $files = $fileModel->getAll(1);
+ $this->assertCount(1, $files);
+
+ $this->assertEquals(1, $files[0]['id']);
+ $this->assertStringStartsWith('Screenshot taken ', $files[0]['name']);
+ $this->assertEquals(1, $files[0]['is_image']);
+ $this->assertEquals(1, $files[0]['task_id']);
+ $this->assertEquals(0, $files[0]['user_id']);
+ $this->assertEquals(4, $files[0]['size']);
+ $this->assertEquals(time(), $files[0]['date'], '', 2);
+ }
+
+ public function testRemove()
+ {
+ $fileModel = new TaskFile($this->container);
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'test', 'tmp/foo', 10));
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('remove')
+ ->with('tmp/foo');
+
+ $this->assertTrue($fileModel->remove(1));
+ }
+
+ public function testRemoveWithObjectStorageError()
+ {
+ $fileModel = new TaskFile($this->container);
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'test', 'tmp/foo', 10));
+
+ $this->container['objectStorage']
+ ->expects($this->once())
+ ->method('remove')
+ ->with('tmp/foo')
+ ->will($this->throwException(new \Kanboard\Core\ObjectStorage\ObjectStorageException('test')));
+
+ $this->assertFalse($fileModel->remove(1));
+ }
+
+ public function testRemoveImage()
+ {
+ $fileModel = new TaskFile($this->container);
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'image.gif', 'tmp/image.gif', 10));
+
+ $this->container['objectStorage']
+ ->expects($this->at(0))
+ ->method('remove')
+ ->with('tmp/image.gif');
+
+ $this->container['objectStorage']
+ ->expects($this->at(1))
+ ->method('remove')
+ ->with('thumbnails'.DIRECTORY_SEPARATOR.'tmp/image.gif');
+
+ $this->assertTrue($fileModel->remove(1));
+ }
+
+ public function testRemoveAll()
+ {
+ $fileModel = new TaskFile($this->container);
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+ $this->assertEquals(1, $fileModel->create(1, 'test', 'tmp/foo', 10));
+ $this->assertEquals(2, $fileModel->create(1, 'test', 'tmp/foo', 10));
+
+ $this->container['objectStorage']
+ ->expects($this->exactly(2))
+ ->method('remove')
+ ->with('tmp/foo');
+
+ $this->assertTrue($fileModel->removeAll(1));
+ }
+}
diff --git a/tests/units/Model/TaskFilterTest.php b/tests/units/Model/TaskFilterTest.php
index daa193b2..9e291c31 100644
--- a/tests/units/Model/TaskFilterTest.php
+++ b/tests/units/Model/TaskFilterTest.php
@@ -10,7 +10,6 @@ use Kanboard\Model\TaskLink;
use Kanboard\Core\DateParser;
use Kanboard\Model\Category;
use Kanboard\Model\Subtask;
-use Kanboard\Model\Config;
use Kanboard\Model\Swimlane;
class TaskFilterTest extends Base
diff --git a/tests/units/Model/TaskFinderTest.php b/tests/units/Model/TaskFinderTest.php
index b21a4ea3..0ed211ed 100644
--- a/tests/units/Model/TaskFinderTest.php
+++ b/tests/units/Model/TaskFinderTest.php
@@ -2,12 +2,9 @@
require_once __DIR__.'/../Base.php';
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
use Kanboard\Model\Project;
-use Kanboard\Model\Category;
-use Kanboard\Model\User;
class TaskFinderTest extends Base
{
diff --git a/tests/units/Model/TaskLinkTest.php b/tests/units/Model/TaskLinkTest.php
index 192a4298..8dd71830 100644
--- a/tests/units/Model/TaskLinkTest.php
+++ b/tests/units/Model/TaskLinkTest.php
@@ -2,7 +2,6 @@
require_once __DIR__.'/../Base.php';
-use Kanboard\Model\Link;
use Kanboard\Model\TaskFinder;
use Kanboard\Model\TaskLink;
use Kanboard\Model\TaskCreation;
diff --git a/tests/units/Model/TaskModificationTest.php b/tests/units/Model/TaskModificationTest.php
index 119201f0..315125d5 100644
--- a/tests/units/Model/TaskModificationTest.php
+++ b/tests/units/Model/TaskModificationTest.php
@@ -6,7 +6,6 @@ use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskModification;
use Kanboard\Model\TaskFinder;
-use Kanboard\Model\TaskStatus;
use Kanboard\Model\Project;
class TaskModificationTest extends Base
diff --git a/tests/units/Model/TaskPermissionTest.php b/tests/units/Model/TaskPermissionTest.php
index 0b093bbb..82cd581e 100644
--- a/tests/units/Model/TaskPermissionTest.php
+++ b/tests/units/Model/TaskPermissionTest.php
@@ -2,12 +2,10 @@
require_once __DIR__.'/../Base.php';
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
use Kanboard\Model\TaskPermission;
use Kanboard\Model\Project;
-use Kanboard\Model\Category;
use Kanboard\Model\User;
use Kanboard\Core\User\UserSession;
diff --git a/tests/units/Model/TaskPositionTest.php b/tests/units/Model/TaskPositionTest.php
index 5f045768..28145a66 100644
--- a/tests/units/Model/TaskPositionTest.php
+++ b/tests/units/Model/TaskPositionTest.php
@@ -3,7 +3,7 @@
require_once __DIR__.'/../Base.php';
use Kanboard\Model\Task;
-use Kanboard\Model\Board;
+use Kanboard\Model\Column;
use Kanboard\Model\TaskStatus;
use Kanboard\Model\TaskPosition;
use Kanboard\Model\TaskCreation;
@@ -21,23 +21,23 @@ class TaskPositionTest extends Base
$tc = new TaskCreation($this->container);
$tf = new TaskFinder($this->container);
$p = new Project($this->container);
- $b = new Board($this->container);
+ $columnModel = new Column($this->container);
$this->assertEquals(1, $p->create(array('name' => 'Project #1')));
$this->assertEquals(1, $tc->create(array('title' => 'Task #1', 'project_id' => 1, 'column_id' => 1)));
- $this->assertEquals(0, $t->getProgress($tf->getById(1), $b->getColumnsList(1)));
+ $this->assertEquals(0, $t->getProgress($tf->getById(1), $columnModel->getList(1)));
$this->assertTrue($tp->movePosition(1, 1, 2, 1));
- $this->assertEquals(25, $t->getProgress($tf->getById(1), $b->getColumnsList(1)));
+ $this->assertEquals(25, $t->getProgress($tf->getById(1), $columnModel->getList(1)));
$this->assertTrue($tp->movePosition(1, 1, 3, 1));
- $this->assertEquals(50, $t->getProgress($tf->getById(1), $b->getColumnsList(1)));
+ $this->assertEquals(50, $t->getProgress($tf->getById(1), $columnModel->getList(1)));
$this->assertTrue($tp->movePosition(1, 1, 4, 1));
- $this->assertEquals(75, $t->getProgress($tf->getById(1), $b->getColumnsList(1)));
+ $this->assertEquals(75, $t->getProgress($tf->getById(1), $columnModel->getList(1)));
$this->assertTrue($ts->close(1));
- $this->assertEquals(100, $t->getProgress($tf->getById(1), $b->getColumnsList(1)));
+ $this->assertEquals(100, $t->getProgress($tf->getById(1), $columnModel->getList(1)));
}
public function testMoveTaskToWrongPosition()
diff --git a/tests/units/Model/TransitionTest.php b/tests/units/Model/TransitionTest.php
new file mode 100644
index 00000000..0c262e78
--- /dev/null
+++ b/tests/units/Model/TransitionTest.php
@@ -0,0 +1,141 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Kanboard\Model\TaskCreation;
+use Kanboard\Model\Transition;
+use Kanboard\Model\Project;
+
+class TransitionTest extends Base
+{
+ public function testSave()
+ {
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $transitionModel = new Transition($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $task_event = array(
+ 'project_id' => 1,
+ 'task_id' => 1,
+ 'src_column_id' => 1,
+ 'dst_column_id' => 2,
+ 'date_moved' => time() - 3600
+ );
+
+ $this->assertTrue($transitionModel->save(1, $task_event));
+
+ $transitions = $transitionModel->getAllByTask(1);
+ $this->assertCount(1, $transitions);
+ $this->assertEquals('Backlog', $transitions[0]['src_column']);
+ $this->assertEquals('Ready', $transitions[0]['dst_column']);
+ $this->assertEquals('', $transitions[0]['name']);
+ $this->assertEquals('admin', $transitions[0]['username']);
+ $this->assertEquals(1, $transitions[0]['user_id']);
+ $this->assertEquals(time(), $transitions[0]['date'], '', 3);
+ $this->assertEquals(3600, $transitions[0]['time_spent']);
+ }
+
+ public function testGetTimeSpentByTask()
+ {
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $transitionModel = new Transition($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+ $task_event = array(
+ 'project_id' => 1,
+ 'task_id' => 1,
+ 'src_column_id' => 1,
+ 'dst_column_id' => 2,
+ 'date_moved' => time() - 3600
+ );
+
+ $this->assertTrue($transitionModel->save(1, $task_event));
+
+ $task_event = array(
+ 'project_id' => 1,
+ 'task_id' => 1,
+ 'src_column_id' => 2,
+ 'dst_column_id' => 3,
+ 'date_moved' => time() - 1200
+ );
+
+ $this->assertTrue($transitionModel->save(1, $task_event));
+
+ $expected = array(
+ '1' => 3600,
+ '2' => 1200,
+ );
+
+ $this->assertEquals($expected, $transitionModel->getTimeSpentByTask(1));
+ }
+
+ public function testGetAllByProject()
+ {
+ $projectModel = new Project($this->container);
+ $taskCreationModel = new TaskCreation($this->container);
+ $transitionModel = new Transition($this->container);
+
+ $this->assertEquals(1, $projectModel->create(array('name' => 'test')));
+ $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test1')));
+ $this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test2')));
+
+ $task_event = array(
+ 'project_id' => 1,
+ 'src_column_id' => 1,
+ 'dst_column_id' => 2,
+ 'date_moved' => time() - 3600
+ );
+
+ $this->assertTrue($transitionModel->save(1, array('task_id' => 1) + $task_event));
+ $this->assertTrue($transitionModel->save(1, array('task_id' => 2) + $task_event));
+
+ $task_event = array(
+ 'project_id' => 1,
+ 'src_column_id' => 2,
+ 'dst_column_id' => 3,
+ 'date_moved' => time() - 1200
+ );
+
+ $this->assertTrue($transitionModel->save(1, array('task_id' => 1) + $task_event));
+ $this->assertTrue($transitionModel->save(1, array('task_id' => 2) + $task_event));
+
+ $transitions = $transitionModel->getAllByProjectAndDate(1, date('Y-m-d'), date('Y-m-d'));
+ $this->assertCount(4, $transitions);
+
+ $this->assertEquals(2, $transitions[0]['id']);
+ $this->assertEquals(1, $transitions[1]['id']);
+ $this->assertEquals(2, $transitions[2]['id']);
+ $this->assertEquals(1, $transitions[3]['id']);
+
+ $this->assertEquals('test2', $transitions[0]['title']);
+ $this->assertEquals('test1', $transitions[1]['title']);
+ $this->assertEquals('test2', $transitions[2]['title']);
+ $this->assertEquals('test1', $transitions[3]['title']);
+
+ $this->assertEquals('Ready', $transitions[0]['src_column']);
+ $this->assertEquals('Ready', $transitions[1]['src_column']);
+ $this->assertEquals('Backlog', $transitions[2]['src_column']);
+ $this->assertEquals('Backlog', $transitions[3]['src_column']);
+
+ $this->assertEquals('Work in progress', $transitions[0]['dst_column']);
+ $this->assertEquals('Work in progress', $transitions[1]['dst_column']);
+ $this->assertEquals('Ready', $transitions[2]['dst_column']);
+ $this->assertEquals('Ready', $transitions[3]['dst_column']);
+
+ $this->assertEquals('admin', $transitions[0]['username']);
+ $this->assertEquals('admin', $transitions[1]['username']);
+ $this->assertEquals('admin', $transitions[2]['username']);
+ $this->assertEquals('admin', $transitions[3]['username']);
+
+ $this->assertEquals(1200, $transitions[0]['time_spent']);
+ $this->assertEquals(1200, $transitions[1]['time_spent']);
+ $this->assertEquals(3600, $transitions[2]['time_spent']);
+ $this->assertEquals(3600, $transitions[3]['time_spent']);
+ }
+}
diff --git a/tests/units/Model/UserNotificationTest.php b/tests/units/Model/UserNotificationTest.php
index 8168a375..53034e20 100644
--- a/tests/units/Model/UserNotificationTest.php
+++ b/tests/units/Model/UserNotificationTest.php
@@ -4,12 +4,9 @@ require_once __DIR__.'/../Base.php';
use Kanboard\Model\TaskFinder;
use Kanboard\Model\TaskCreation;
-use Kanboard\Model\Subtask;
-use Kanboard\Model\Comment;
use Kanboard\Model\User;
use Kanboard\Model\Group;
use Kanboard\Model\GroupMember;
-use Kanboard\Model\File;
use Kanboard\Model\Project;
use Kanboard\Model\ProjectPermission;
use Kanboard\Model\Task;
@@ -17,7 +14,6 @@ use Kanboard\Model\ProjectUserRole;
use Kanboard\Model\ProjectGroupRole;
use Kanboard\Model\UserNotification;
use Kanboard\Model\UserNotificationFilter;
-use Kanboard\Model\UserNotificationType;
use Kanboard\Subscriber\UserNotificationSubscriber;
use Kanboard\Core\Security\Role;
diff --git a/tests/units/Model/UserTest.php b/tests/units/Model/UserTest.php
index 0987fa56..7501f2e0 100644
--- a/tests/units/Model/UserTest.php
+++ b/tests/units/Model/UserTest.php
@@ -5,7 +5,6 @@ require_once __DIR__.'/../Base.php';
use Kanboard\Model\User;
use Kanboard\Model\Subtask;
use Kanboard\Model\Comment;
-use Kanboard\Model\Task;
use Kanboard\Model\TaskCreation;
use Kanboard\Model\TaskFinder;
use Kanboard\Model\Project;
@@ -96,13 +95,14 @@ class UserTest extends Base
$this->assertEquals('you', $users[2]['username']);
}
- public function testGetList()
+ public function testGetActiveUsersList()
{
$u = new User($this->container);
$this->assertEquals(2, $u->create(array('username' => 'you')));
$this->assertEquals(3, $u->create(array('username' => 'me', 'name' => 'Me too')));
+ $this->assertEquals(4, $u->create(array('username' => 'foobar', 'is_active' => 0)));
- $users = $u->getList();
+ $users = $u->getActiveUsersList();
$expected = array(
1 => 'admin',
@@ -112,7 +112,7 @@ class UserTest extends Base
$this->assertEquals($expected, $users);
- $users = $u->getList(true);
+ $users = $u->getActiveUsersList(true);
$expected = array(
User::EVERYBODY_ID => 'Everybody',
@@ -391,4 +391,24 @@ class UserTest extends Base
$this->assertEquals('toto', $user['username']);
$this->assertEmpty($user['token']);
}
+
+ public function testEnableDisable()
+ {
+ $userModel = new User($this->container);
+ $this->assertEquals(2, $userModel->create(array('username' => 'toto')));
+
+ $this->assertTrue($userModel->isActive(2));
+ $user = $userModel->getById(2);
+ $this->assertEquals(1, $user['is_active']);
+
+ $this->assertTrue($userModel->disable(2));
+ $user = $userModel->getById(2);
+ $this->assertEquals(0, $user['is_active']);
+ $this->assertFalse($userModel->isActive(2));
+
+ $this->assertTrue($userModel->enable(2));
+ $user = $userModel->getById(2);
+ $this->assertEquals(1, $user['is_active']);
+ $this->assertTrue($userModel->isActive(2));
+ }
}
diff --git a/tests/units/Model/UserUnreadNotificationTest.php b/tests/units/Model/UserUnreadNotificationTest.php
index bf274d95..918ab411 100644
--- a/tests/units/Model/UserUnreadNotificationTest.php
+++ b/tests/units/Model/UserUnreadNotificationTest.php
@@ -4,10 +4,7 @@ require_once __DIR__.'/../Base.php';
use Kanboard\Model\TaskFinder;
use Kanboard\Model\TaskCreation;
-use Kanboard\Model\Subtask;
-use Kanboard\Model\Comment;
use Kanboard\Model\User;
-use Kanboard\Model\File;
use Kanboard\Model\Task;
use Kanboard\Model\Project;
use Kanboard\Model\UserUnreadNotification;