diff options
author | Frédéric Guillot <fred@kanboard.net> | 2014-11-22 18:22:10 -0500 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2014-11-22 18:22:10 -0500 |
commit | 77e10d25829f3523a168bf61424fac99a539f8be (patch) | |
tree | 9b3d274146fa9543c4734a945e61b9d975960ff6 | |
parent | 15038cdb10f8c691edc7980fd1aed32dcbed3f9f (diff) |
Improve API to return id instead of a boolean
-rw-r--r-- | app/Model/Category.php | 11 | ||||
-rw-r--r-- | app/Model/Comment.php | 17 | ||||
-rw-r--r-- | app/Model/SubTask.php | 18 | ||||
-rw-r--r-- | app/Model/User.php | 12 | ||||
-rw-r--r-- | composer.lock | 16 | ||||
-rw-r--r-- | docs/api-json-rpc.markdown | 29 | ||||
-rw-r--r-- | jsonrpc.php | 359 | ||||
-rw-r--r-- | tests/functionals/ApiTest.php | 64 | ||||
-rw-r--r-- | tests/units/CommentTest.php | 10 | ||||
-rw-r--r-- | tests/units/NotificationTest.php | 16 | ||||
-rw-r--r-- | tests/units/ProjectPermissionTest.php | 4 | ||||
-rw-r--r-- | tests/units/TaskPermissionTest.php | 4 | ||||
-rw-r--r-- | tests/units/UserTest.php | 8 |
13 files changed, 264 insertions, 304 deletions
diff --git a/app/Model/Category.php b/app/Model/Category.php index fb54594b..913c3e35 100644 --- a/app/Model/Category.php +++ b/app/Model/Category.php @@ -94,11 +94,18 @@ class Category extends Base * * @access public * @param array $values Form values - * @return bool + * @return bool|integer */ public function create(array $values) { - return $this->db->table(self::TABLE)->save($values); + return $this->db->transaction(function($db) use ($values) { + + if (! $db->table(Category::TABLE)->save($values)) { + return false; + } + + return (int) $db->getConnection()->getLastId(); + }); } /** diff --git a/app/Model/Comment.php b/app/Model/Comment.php index cd361b1d..8ef89094 100644 --- a/app/Model/Comment.php +++ b/app/Model/Comment.php @@ -99,20 +99,25 @@ class Comment extends Base * * @access public * @param array $values Form values - * @return boolean + * @return boolean|integer */ public function create(array $values) { $values['date'] = time(); - if ($this->db->table(self::TABLE)->save($values)) { + return $this->db->transaction(function($db) use ($values) { + + if (! $db->table(Comment::TABLE)->save($values)) { + return false; + } + + $comment_id = (int) $db->getConnection()->getLastId(); + $values['id'] = $comment_id; - $values['id'] = $this->db->getConnection()->getLastId(); $this->event->trigger(self::EVENT_CREATE, $values); - return true; - } - return false; + return $comment_id; + }); } /** diff --git a/app/Model/SubTask.php b/app/Model/SubTask.php index 886ad1f3..6cb4ec4e 100644 --- a/app/Model/SubTask.php +++ b/app/Model/SubTask.php @@ -138,19 +138,25 @@ class SubTask extends Base * * @access public * @param array $values Form values - * @return bool + * @return bool|integer */ public function create(array $values) { $this->prepare($values); - $result = $this->db->table(self::TABLE)->save($values); - if ($result) { - $values['id'] = $this->db->getConnection()->getLastId(); + return $this->db->transaction(function($db) use ($values) { + + if (! $db->table(SubTask::TABLE)->save($values)) { + return false; + } + + $subtask_id = (int) $db->getConnection()->getLastId(); + $values['id'] = $subtask_id; + $this->event->trigger(self::EVENT_CREATE, $values); - } - return $result; + return $subtask_id; + }); } /** diff --git a/app/Model/User.php b/app/Model/User.php index 41bad0bb..3dd5993d 100644 --- a/app/Model/User.php +++ b/app/Model/User.php @@ -255,12 +255,20 @@ class User extends Base * * @access public * @param array $values Form values - * @return boolean + * @return boolean|integer */ public function create(array $values) { $this->prepare($values); - return $this->db->table(self::TABLE)->save($values); + + return $this->db->transaction(function($db) use ($values) { + + if (! $db->table(User::TABLE)->save($values)) { + return false; + } + + return (int) $db->getConnection()->getLastId(); + }); } /** diff --git a/composer.lock b/composer.lock index a90cbb00..e06de45b 100644 --- a/composer.lock +++ b/composer.lock @@ -51,12 +51,12 @@ "source": { "type": "git", "url": "https://github.com/fguillot/JsonRPC.git", - "reference": "66db4093984790c34577c0ba0e17f2e3d2dc14a0" + "reference": "86e8339205616ad9b09d581957cc084a99c0ed27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fguillot/JsonRPC/zipball/66db4093984790c34577c0ba0e17f2e3d2dc14a0", - "reference": "66db4093984790c34577c0ba0e17f2e3d2dc14a0", + "url": "https://api.github.com/repos/fguillot/JsonRPC/zipball/86e8339205616ad9b09d581957cc084a99c0ed27", + "reference": "86e8339205616ad9b09d581957cc084a99c0ed27", "shasum": "" }, "require": { @@ -80,7 +80,7 @@ ], "description": "A simple Json-RPC client/server library that just works", "homepage": "https://github.com/fguillot/JsonRPC", - "time": "2014-11-05 01:56:31" + "time": "2014-11-22 20:32:14" }, { "name": "fguillot/picodb", @@ -88,12 +88,12 @@ "source": { "type": "git", "url": "https://github.com/fguillot/picoDb.git", - "reference": "48602866414b5b396a37c40eef9724962042ff21" + "reference": "ebe721de0002b7ff86b7f66df0065224bf896eb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fguillot/picoDb/zipball/48602866414b5b396a37c40eef9724962042ff21", - "reference": "48602866414b5b396a37c40eef9724962042ff21", + "url": "https://api.github.com/repos/fguillot/picoDb/zipball/ebe721de0002b7ff86b7f66df0065224bf896eb2", + "reference": "ebe721de0002b7ff86b7f66df0065224bf896eb2", "shasum": "" }, "require": { @@ -117,7 +117,7 @@ ], "description": "Minimalist database query builder", "homepage": "https://github.com/fguillot/picoDb", - "time": "2014-11-15 23:37:30" + "time": "2014-11-22 04:15:43" }, { "name": "fguillot/simple-validator", diff --git a/docs/api-json-rpc.markdown b/docs/api-json-rpc.markdown index 23cc3518..f2db3ea2 100644 --- a/docs/api-json-rpc.markdown +++ b/docs/api-json-rpc.markdown @@ -149,7 +149,7 @@ Procedures - Purpose: **Create a new project** - Parameters: - **name** (string, required) -- Result on success: **true** +- Result on success: **project_id** - Result on failure: **false** Request example: @@ -171,7 +171,7 @@ Response example: { "jsonrpc": "2.0", "id": 1797076613, - "result": true + "result": 2 } ``` @@ -487,10 +487,9 @@ Response example: } ``` -### getAllowedUsers +### getMembers -- Purpose: **Get allowed users for a given project** -- Note: Only people explicitly allowed are part of this list, administrators are always authorized +- Purpose: **Get members of a project** - Parameters: - **project_id** (integer, required) - Result on success: Key/value pair of user_id and username @@ -943,7 +942,7 @@ Response example: - **score** (integer, optional) - **date_due**: ISO8601 format (string, optional) - **category_id** (integer, optional) -- Result on success: **true** +- Result on success: **task_id** - Result on failure: **false** Request example: @@ -974,7 +973,7 @@ Response example: { "jsonrpc": "2.0", "id": 1176509098, - "result": true + "result": 3 } ``` @@ -1279,7 +1278,7 @@ Response example: - **email** (string, optional) - **is_admin** Set the value 1 for admins or 0 for regular users (integer, optional) - **default_project_id** (integer, optional) -- Result on success: **true** +- Result on success: **user_id** - Result on failure: **false** Request example: @@ -1302,7 +1301,7 @@ Response example: { "jsonrpc": "2.0", "id": 1518863034, - "result": true + "result": 22 } ``` @@ -1466,7 +1465,7 @@ Response example: - Parameters: - **project_id** (integer, required) - **name** (string, required, must be unique for the given project) -- Result on success: **true** +- Result on success: **category_id** - Result on failure: **false** Request example: @@ -1489,7 +1488,7 @@ Response example: { "jsonrpc": "2.0", "id": 541909890, - "result": true + "result": 4 } ``` @@ -1638,7 +1637,7 @@ Response example: - **task_id** (integer, required) - **user_id** (integer, required) - **content** Markdown content (string, required) -- Result on success: **true** +- Result on success: **comment_id** - Result on failure: **false** Request example: @@ -1662,7 +1661,7 @@ Response example: { "jsonrpc": "2.0", "id": 1580417921, - "result": true + "result": 11 } ``` @@ -1822,7 +1821,7 @@ Response example: - **time_estimated** (int, optional) - **time_spent** (int, optional) - **status** (int, optional) -- Result on success: **true** +- Result on success: **subtask_id** - Result on failure: **false** Request example: @@ -1845,7 +1844,7 @@ Response example: { "jsonrpc": "2.0", "id": 2041554661, - "result": true + "result": 45 } ``` diff --git a/jsonrpc.php b/jsonrpc.php index 39c2f474..67b45fb3 100644 --- a/jsonrpc.php +++ b/jsonrpc.php @@ -2,74 +2,67 @@ require __DIR__.'/app/common.php'; -use JsonRPC\Server; -use Model\Project; -use Model\ProjectPermission; -use Model\Task; -use Model\TaskCreation; -use Model\TaskFinder; -use Model\TaskStatus; -use Model\TaskValidator; -use Model\User; -use Model\Config; -use Model\Category; -use Model\Comment; -use Model\SubTask; -use Model\Board; -use Model\Action; -use Model\Webhook; -use Model\Notification; - -$config = new Config($container); -$config->setupTranslations(); -$config->setupTimezone(); - -$project = new Project($container); -$projectPermission = new ProjectPermission($container); -$task = new Task($container); -$taskCreation = new TaskCreation($container); -$taskFinder = new TaskFinder($container); -$taskStatus = new TaskStatus($container); -$taskValidator = new TaskValidator($container); -$user = new User($container); -$category = new Category($container); -$comment = new Comment($container); -$subtask = new SubTask($container); -$board = new Board($container); -$action = new Action($container); -$webhook = new Webhook($container); -$notification = new Notification($container); - -$action->attachEvents(); -$project->attachEvents(); -$webhook->attachEvents(); -$notification->attachEvents(); - -$server = new Server; -$server->authentication(array('jsonrpc' => $config->get('api_token'))); +$models = array( + 'Config', + 'Project', + 'ProjectPermission', + 'Task', + 'TaskCreation', + 'TaskFinder', + 'TaskStatus', + 'TaskValidator', + 'User', + 'Category', + 'Comment', + 'SubTask', + 'Board', + 'Action', + 'Webhook', + 'Notification', +); + +$events = array( + 'actionModel', + 'projectModel', + 'webhookModel', + 'notificationModel', +); + +foreach ($models as $model) { + $variable = lcfirst($model).'Model'; + $class = '\Model\\'.$model; + $$variable = new $class($container); +} + +foreach ($events as $class) { + $$class->attachEvents(); +} + +$configModel->setupTranslations(); +$configModel->setupTimezone(); + +$server = new JsonRPC\Server; +$server->authentication(array('jsonrpc' => $configModel->get('api_token'))); /** * Project procedures */ -$server->register('createProject', function($name) use ($project) { +$server->bind('getProjectById', $projectModel, 'getById'); +$server->bind('getProjectByName', $projectModel, 'getByName'); +$server->bind('getAllProjects', $projectModel, 'getAll'); +$server->bind('removeProject', $projectModel, 'remove'); +$server->bind('enableProject', $projectModel, 'enable'); +$server->bind('disableProject', $projectModel, 'disable'); +$server->bind('enableProjectPublicAccess', $projectModel, 'enablePublicAccess'); +$server->bind('disableProjectPublicAccess', $projectModel, 'disablePublicAccess'); + +$server->register('createProject', function($name) use ($projectModel) { $values = array('name' => $name); - list($valid,) = $project->validateCreation($values); - return $valid && $project->create($values); + list($valid,) = $projectModel->validateCreation($values); + return $valid && $projectModel->create($values); }); -$server->register('getProjectById', function($project_id) use ($project) { - return $project->getById($project_id); -}); - -$server->register('getProjectByName', function($name) use ($project) { - return $project->getByName($name); -}); - -$server->register('getAllProjects', function() use ($project) { - return $project->getAll(); -}); - -$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($project) { +$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($projectModel) { $values = array( 'id' => $id, @@ -85,87 +78,40 @@ $server->register('updateProject', function($id, $name, $is_active = null, $is_p } } - list($valid,) = $project->validateModification($values); - return $valid && $project->update($values); -}); - -$server->register('removeProject', function($project_id) use ($project) { - return $project->remove($project_id); -}); - -$server->register('enableProject', function($project_id) use ($project) { - return $project->enable($project_id); + list($valid,) = $projectModel->validateModification($values); + return $valid && $projectModel->update($values); }); -$server->register('disableProject', function($project_id) use ($project) { - return $project->disable($project_id); -}); - -$server->register('enableProjectPublicAccess', function($project_id) use ($project) { - return $project->enablePublicAccess($project_id); -}); - -$server->register('disableProjectPublicAccess', function($project_id) use ($project) { - return $project->disablePublicAccess($project_id); -}); - - /** * Board procedures */ -$server->register('getBoard', function($project_id) use ($board) { - return $board->get($project_id); -}); - -$server->register('getColumns', function($project_id) use ($board) { - return $board->getColumns($project_id); -}); - -$server->register('getColumn', function($column_id) use ($board) { - return $board->getColumn($column_id); -}); - -$server->register('moveColumnUp', function($project_id, $column_id) use ($board) { - return $board->moveUp($project_id, $column_id); -}); - -$server->register('moveColumnDown', function($project_id, $column_id) use ($board) { - return $board->moveDown($project_id, $column_id); -}); - -$server->register('updateColumn', function($column_id, $title, $task_limit = 0) use ($board) { - return $board->updateColumn($column_id, $title, $task_limit); -}); - -$server->register('addColumn', function($project_id, $title, $task_limit = 0) use ($board) { - return $board->addColumn($project_id, $title, $task_limit); -}); - -$server->register('removeColumn', function($column_id) use ($board) { - return $board->removeColumn($column_id); -}); - +$server->bind('getBoard', $boardModel, 'get'); +$server->bind('getColumns', $boardModel, 'getColumns'); +$server->bind('getColumn', $boardModel, 'getColumn'); +$server->bind('moveColumnUp', $boardModel, 'moveUp'); +$server->bind('moveColumnDown', $boardModel, 'moveDown'); +$server->bind('updateColumn', $boardModel, 'updateColumn'); +$server->bind('addColumn', $boardModel, 'addColumn'); +$server->bind('removeColumn', $boardModel, 'removeColumn'); /** * Project permissions procedures */ -$server->register('getAllowedUsers', function($project_id) use ($projectPermission) { - return $projectPermission->getMemberList($project_id, false, false); -}); - -$server->register('revokeUser', function($project_id, $user_id) use ($project, $projectPermission) { - return $projectPermission->revokeUser($project_id, $user_id); -}); - -$server->register('allowUser', function($project_id, $user_id) use ($project, $projectPermission) { - return $projectPermission->allowUser($project_id, $user_id); -}); - +$server->bind('getMembers', $projectPermissionModel, 'getMembers'); +$server->bind('revokeUser', $projectPermissionModel, 'revokeUser'); +$server->bind('allowUser', $projectPermissionModel, 'allowUser'); /** * Task procedures */ -$server->register('createTask', function($title, $project_id, $color_id = '', $column_id = 0, $owner_id = 0, $creator_id = 0, $date_due = '', $description = '', $category_id = 0, $score = 0) use ($taskCreation, $taskValidator) { +$server->bind('getTask', $taskFinderModel, 'getById'); +$server->bind('getAllTasks', $taskFinderModel, 'getAll'); +$server->bind('openTask', $taskStatusModel, 'open'); +$server->bind('closeTask', $taskStatusModel, 'close'); +$server->bind('removeTask', $taskModel, 'remove'); +$server->bind('moveTaskPosition', $taskModel, 'movePosition'); + +$server->register('createTask', function($title, $project_id, $color_id = '', $column_id = 0, $owner_id = 0, $creator_id = 0, $date_due = '', $description = '', $category_id = 0, $score = 0) use ($taskCreationModel, $taskValidatorModel) { $values = array( 'title' => $title, @@ -180,19 +126,16 @@ $server->register('createTask', function($title, $project_id, $color_id = '', $c 'score' => $score, ); - list($valid,) = $taskValidator->validateCreation($values); - return $valid && $taskCreation->create($values) !== false; -}); + list($valid,) = $taskValidatorModel->validateCreation($values); -$server->register('getTask', function($task_id) use ($taskFinder) { - return $taskFinder->getById($task_id); -}); + if (! $valid) { + return false; + } -$server->register('getAllTasks', function($project_id, $status) use ($taskFinder) { - return $taskFinder->getAll($project_id, $status); + return $taskCreationModel->create($values); }); -$server->register('updateTask', function($id, $title = null, $project_id = null, $color_id = null, $column_id = null, $owner_id = null, $creator_id = null, $date_due = null, $description = null, $category_id = null, $score = null) use ($task, $taskValidator) { +$server->register('updateTask', function($id, $title = null, $project_id = null, $color_id = null, $column_id = null, $owner_id = null, $creator_id = null, $date_due = null, $description = null, $category_id = null, $score = null) use ($taskModel, $taskValidatorModel) { $values = array( 'id' => $id, @@ -214,31 +157,19 @@ $server->register('updateTask', function($id, $title = null, $project_id = null, } } - list($valid) = $taskValidator->validateApiModification($values); - return $valid && $task->update($values); -}); - -$server->register('openTask', function($task_id) use ($taskStatus) { - return $taskStatus->open($task_id); -}); - -$server->register('closeTask', function($task_id) use ($taskStatus) { - return $taskStatus->close($task_id); -}); - -$server->register('removeTask', function($task_id) use ($task) { - return $task->remove($task_id); -}); - -$server->register('moveTaskPosition', function($project_id, $task_id, $column_id, $position) use ($task) { - return $task->movePosition($project_id, $task_id, $column_id, $position); + list($valid) = $taskValidatorModel->validateApiModification($values); + return $valid && $taskModel->update($values); }); /** * User procedures */ -$server->register('createUser', function($username, $password, $name = '', $email = '', $is_admin = 0, $default_project_id = 0) use ($user) { +$server->bind('getUser', $userModel, 'getById'); +$server->bind('getAllUsers', $userModel, 'getAll'); +$server->bind('removeUser', $userModel, 'remove'); + +$server->register('createUser', function($username, $password, $name = '', $email = '', $is_admin = 0, $default_project_id = 0) use ($userModel) { $values = array( 'username' => $username, @@ -250,19 +181,16 @@ $server->register('createUser', function($username, $password, $name = '', $emai 'default_project_id' => $default_project_id, ); - list($valid,) = $user->validateCreation($values); - return $valid && $user->create($values); -}); + list($valid,) = $userModel->validateCreation($values); -$server->register('getUser', function($user_id) use ($user) { - return $user->getById($user_id); -}); + if (! $valid) { + return false; + } -$server->register('getAllUsers', function() use ($user) { - return $user->getAll(); + return $userModel->create($values); }); -$server->register('updateUser', function($id, $username = null, $name = null, $email = null, $is_admin = null, $default_project_id = null) use ($user) { +$server->register('updateUser', function($id, $username = null, $name = null, $email = null, $is_admin = null, $default_project_id = null) use ($userModel) { $values = array( 'id' => $id, @@ -279,57 +207,52 @@ $server->register('updateUser', function($id, $username = null, $name = null, $e } } - list($valid,) = $user->validateApiModification($values); - return $valid && $user->update($values); + list($valid,) = $userModel->validateApiModification($values); + return $valid && $userModel->update($values); }); -$server->register('removeUser', function($user_id) use ($user) { - return $user->remove($user_id); -}); - - /** * Category procedures */ -$server->register('createCategory', function($project_id, $name) use ($category) { +$server->bind('getCategory', $categoryModel, 'getById'); +$server->bind('getAllCategories', $categoryModel, 'getAll'); +$server->bind('removeCategory', $categoryModel, 'remove'); + +$server->register('createCategory', function($project_id, $name) use ($categoryModel) { $values = array( 'project_id' => $project_id, 'name' => $name, ); - list($valid,) = $category->validateCreation($values); - return $valid && $category->create($values); -}); + list($valid,) = $categoryModel->validateCreation($values); -$server->register('getCategory', function($category_id) use ($category) { - return $category->getById($category_id); -}); + if (! $valid) { + return false; + } -$server->register('getAllCategories', function($project_id) use ($category) { - return $category->getAll($project_id); + return $categoryModel->create($values); }); -$server->register('updateCategory', function($id, $name) use ($category) { +$server->register('updateCategory', function($id, $name) use ($categoryModel) { $values = array( 'id' => $id, 'name' => $name, ); - list($valid,) = $category->validateModification($values); - return $valid && $category->update($values); + list($valid,) = $categoryModel->validateModification($values); + return $valid && $categoryModel->update($values); }); -$server->register('removeCategory', function($category_id) use ($category) { - return $category->remove($category_id); -}); - - /** * Comments procedures */ -$server->register('createComment', function($task_id, $user_id, $content) use ($comment) { +$server->bind('getComment', $commentModel, 'getById'); +$server->bind('getAllComments', $commentModel, 'getAll'); +$server->bind('removeComment', $commentModel, 'remove'); + +$server->register('createComment', function($task_id, $user_id, $content) use ($commentModel) { $values = array( 'task_id' => $task_id, @@ -337,38 +260,34 @@ $server->register('createComment', function($task_id, $user_id, $content) use ($ 'comment' => $content, ); - list($valid,) = $comment->validateCreation($values); - return $valid && $comment->create($values); -}); + list($valid,) = $commentModel->validateCreation($values); -$server->register('getComment', function($comment_id) use ($comment) { - return $comment->getById($comment_id); -}); + if (! $valid) { + return false; + } -$server->register('getAllComments', function($task_id) use ($comment) { - return $comment->getAll($task_id); + return $commentModel->create($values); }); -$server->register('updateComment', function($id, $content) use ($comment) { +$server->register('updateComment', function($id, $content) use ($commentModel) { $values = array( 'id' => $id, 'comment' => $content, ); - list($valid,) = $comment->validateModification($values); - return $valid && $comment->update($values); + list($valid,) = $commentModel->validateModification($values); + return $valid && $commentModel->update($values); }); -$server->register('removeComment', function($comment_id) use ($comment) { - return $comment->remove($comment_id); -}); - - /** * Subtask procedures */ -$server->register('createSubtask', function($task_id, $title, $user_id = 0, $time_estimated = 0, $time_spent = 0, $status = 0) use ($subtask) { +$server->bind('getSubtask', $subTaskModel, 'getById'); +$server->bind('getAllSubtasks', $subTaskModel, 'getAll'); +$server->bind('removeSubtask', $subTaskModel, 'remove'); + +$server->register('createSubtask', function($task_id, $title, $user_id = 0, $time_estimated = 0, $time_spent = 0, $status = 0) use ($subTaskModel) { $values = array( 'title' => $title, @@ -385,19 +304,16 @@ $server->register('createSubtask', function($task_id, $title, $user_id = 0, $tim } } - list($valid,) = $subtask->validateCreation($values); - return $valid && $subtask->create($values); -}); + list($valid,) = $subTaskModel->validateCreation($values); -$server->register('getSubtask', function($subtask_id) use ($subtask) { - return $subtask->getById($subtask_id); -}); + if (! $valid) { + return false; + } -$server->register('getAllSubtasks', function($task_id) use ($subtask) { - return $subtask->getAll($task_id); + return $subTaskModel->create($values); }); -$server->register('updateSubtask', function($id, $task_id, $title = null, $user_id = null, $time_estimated = null, $time_spent = null, $status = null) use ($subtask) { +$server->register('updateSubtask', function($id, $task_id, $title = null, $user_id = null, $time_estimated = null, $time_spent = null, $status = null) use ($subTaskModel) { $values = array( 'id' => $id, @@ -415,15 +331,10 @@ $server->register('updateSubtask', function($id, $task_id, $title = null, $user_ } } - list($valid,) = $subtask->validateModification($values); - return $valid && $subtask->update($values); -}); - -$server->register('removeSubtask', function($subtask_id) use ($subtask) { - return $subtask->remove($subtask_id); + list($valid,) = $subTaskModel->validateModification($values); + return $valid && $subTaskModel->update($values); }); - /** * Parse incoming requests */ diff --git a/tests/functionals/ApiTest.php b/tests/functionals/ApiTest.php index 262d289e..3b1c5241 100644 --- a/tests/functionals/ApiTest.php +++ b/tests/functionals/ApiTest.php @@ -162,12 +162,15 @@ class Api extends PHPUnit_Framework_TestCase 'column_id' => 2, ); - //$this->assertTrue($this->client->execute('createTask', $task)); - $this->assertTrue($this->client->createTask($task)); + $task_id = $this->client->createTask($task); + + $this->assertNotFalse($task_id); + $this->assertInternalType('int', $task_id); + $this->assertTrue($task_id > 0); } /** - * @expectedException BadFunctionCallException + * @expectedException InvalidArgumentException */ public function testCreateTaskWithBadParams() { @@ -207,12 +210,15 @@ class Api extends PHPUnit_Framework_TestCase public function testUpdateTask() { $task = $this->client->getTask(1); - $task['color_id'] = 'green'; - $task['column_id'] = 1; - $task['description'] = 'test'; - $task['date_due'] = ''; - $this->assertTrue($this->client->execute('updateTask', $task)); + $values = array(); + $values['id'] = $task['id']; + $values['color_id'] = 'green'; + $values['column_id'] = 1; + $values['description'] = 'test'; + $values['date_due'] = ''; + + $this->assertTrue($this->client->execute('updateTask', $values)); } public function testRemoveTask() @@ -241,11 +247,14 @@ class Api extends PHPUnit_Framework_TestCase 'password' => '123456', ); - $this->assertTrue($this->client->execute('createUser', $user)); + $user_id = $this->client->execute('createUser', $user); + $this->assertNotFalse($user_id); + $this->assertInternalType('int', $user_id); + $this->assertTrue($user_id > 0); } /** - * @expectedException BadFunctionCallException + * @expectedException InvalidArgumentException */ public function testCreateUserWithBadParams() { @@ -296,7 +305,7 @@ class Api extends PHPUnit_Framework_TestCase public function testGetAllowedUsers() { - $users = $this->client->getAllowedUsers(1); + $users = $this->client->getMembers(1); $this->assertNotFalse($users); $this->assertEquals(array(), $users); } @@ -305,7 +314,7 @@ class Api extends PHPUnit_Framework_TestCase { $this->assertTrue($this->client->allowUser(1, 2)); - $users = $this->client->getAllowedUsers(1); + $users = $this->client->getMembers(1); $this->assertNotFalse($users); $this->assertEquals(array(2 => 'Titi'), $users); } @@ -314,7 +323,7 @@ class Api extends PHPUnit_Framework_TestCase { $this->assertTrue($this->client->revokeUser(1, 2)); - $users = $this->client->getAllowedUsers(1); + $users = $this->client->getMembers(1); $this->assertNotFalse($users); $this->assertEquals(array(), $users); } @@ -329,7 +338,7 @@ class Api extends PHPUnit_Framework_TestCase 'column_id' => 1, ); - $this->assertTrue($this->client->execute('createTask', $task)); + $this->assertNotFalse($this->client->execute('createTask', $task)); $tasks = $this->client->getAllTasks(1, 1); $this->assertNotEmpty($tasks); @@ -341,7 +350,11 @@ class Api extends PHPUnit_Framework_TestCase 'content' => 'boo', ); - $this->assertTrue($this->client->execute('createComment', $comment)); + $comment_id = $this->client->execute('createComment', $comment); + + $this->assertNotFalse($comment_id); + $this->assertInternalType('int', $comment_id); + $this->assertTrue($comment_id > 0); } public function testGetComment() @@ -375,7 +388,11 @@ class Api extends PHPUnit_Framework_TestCase 'content' => 'blabla', ); - $this->assertTrue($this->client->execute('createComment', $comment)); + $comment_id = $this->client->createComment($comment); + + $this->assertNotFalse($comment_id); + $this->assertInternalType('int', $comment_id); + $this->assertTrue($comment_id > 0); $comments = $this->client->getAllComments($task_id); $this->assertNotFalse($comments); @@ -410,7 +427,11 @@ class Api extends PHPUnit_Framework_TestCase 'title' => 'subtask #1', ); - $this->assertTrue($this->client->execute('createSubtask', $subtask)); + $subtask_id = $this->client->createSubtask($subtask); + + $this->assertNotFalse($subtask_id); + $this->assertInternalType('int', $subtask_id); + $this->assertTrue($subtask_id > 0); } public function testGetSubtask() @@ -444,7 +465,7 @@ class Api extends PHPUnit_Framework_TestCase 'title' => 'Subtask #2', ); - $this->assertTrue($this->client->execute('createSubtask', $subtask)); + $this->assertNotFalse($this->client->execute('createSubtask', $subtask)); $subtasks = $this->client->getAllSubtasks($this->getTaskId()); $this->assertNotFalse($subtasks); @@ -483,7 +504,10 @@ class Api extends PHPUnit_Framework_TestCase 'project_id' => 1, ); - $this->assertTrue($this->client->execute('createCategory', $category)); + $cat_id = $this->client->execute('createCategory', $category); + $this->assertNotFalse($cat_id); + $this->assertInternalType('int', $cat_id); + $this->assertTrue($cat_id > 0); // Duplicate @@ -496,7 +520,7 @@ class Api extends PHPUnit_Framework_TestCase } /** - * @expectedException BadFunctionCallException + * @expectedException InvalidArgumentException */ public function testCategoryCreationWithBadParams() { diff --git a/tests/units/CommentTest.php b/tests/units/CommentTest.php index 8846c0b8..36ff1352 100644 --- a/tests/units/CommentTest.php +++ b/tests/units/CommentTest.php @@ -17,7 +17,7 @@ class CommentTest extends Base $this->assertEquals(1, $p->create(array('name' => 'test1'))); $this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 3, 'owner_id' => 1))); - $this->assertTrue($c->create(array('task_id' => 1, 'comment' => 'bla bla', 'user_id' => 1))); + $this->assertNotFalse($c->create(array('task_id' => 1, 'comment' => 'bla bla', 'user_id' => 1))); $comment = $c->getById(1); @@ -37,9 +37,9 @@ class CommentTest extends Base $this->assertEquals(1, $p->create(array('name' => 'test1'))); $this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 3, 'owner_id' => 1))); - $this->assertTrue($c->create(array('task_id' => 1, 'comment' => 'c1', 'user_id' => 1))); - $this->assertTrue($c->create(array('task_id' => 1, 'comment' => 'c2', 'user_id' => 1))); - $this->assertTrue($c->create(array('task_id' => 1, 'comment' => 'c3', 'user_id' => 1))); + $this->assertNotFalse($c->create(array('task_id' => 1, 'comment' => 'c1', 'user_id' => 1))); + $this->assertNotFalse($c->create(array('task_id' => 1, 'comment' => 'c2', 'user_id' => 1))); + $this->assertNotFalse($c->create(array('task_id' => 1, 'comment' => 'c3', 'user_id' => 1))); $comments = $c->getAll(1); @@ -60,7 +60,7 @@ class CommentTest extends Base $this->assertEquals(1, $p->create(array('name' => 'test1'))); $this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1, 'column_id' => 3, 'owner_id' => 1))); - $this->assertTrue($c->create(array('task_id' => 1, 'comment' => 'c1', 'user_id' => 1))); + $this->assertNotFalse($c->create(array('task_id' => 1, 'comment' => 'c1', 'user_id' => 1))); $this->assertTrue($c->update(array('id' => 1, 'comment' => 'bla'))); $comment = $c->getById(1); diff --git a/tests/units/NotificationTest.php b/tests/units/NotificationTest.php index 770a9829..d8e623e1 100644 --- a/tests/units/NotificationTest.php +++ b/tests/units/NotificationTest.php @@ -19,16 +19,16 @@ class NotificationTest extends Base $this->assertEquals(1, $p->create(array('name' => 'UnitTest1'))); // Email + Notifications enabled - $this->assertTrue($u->create(array('username' => 'user1', 'email' => 'user1@here', 'notifications_enabled' => 1))); + $this->assertNotFalse($u->create(array('username' => 'user1', 'email' => 'user1@here', 'notifications_enabled' => 1))); // No email + Notifications enabled - $this->assertTrue($u->create(array('username' => 'user2', 'email' => '', 'notifications_enabled' => 1))); + $this->assertNotFalse($u->create(array('username' => 'user2', 'email' => '', 'notifications_enabled' => 1))); // Email + Notifications enabled - $this->assertTrue($u->create(array('username' => 'user3', 'email' => 'user3@here', 'notifications_enabled' => 1))); + $this->assertNotFalse($u->create(array('username' => 'user3', 'email' => 'user3@here', 'notifications_enabled' => 1))); // No email + notifications disabled - $this->assertTrue($u->create(array('username' => 'user4'))); + $this->assertNotFalse($u->create(array('username' => 'user4'))); // Nobody is member of any projects $this->assertEmpty($pp->getMembers(1)); @@ -61,16 +61,16 @@ class NotificationTest extends Base $this->assertEquals(3, $p->create(array('name' => 'UnitTest3', 'is_everybody_allowed' => 1))); // Email + Notifications enabled - $this->assertTrue($u->create(array('username' => 'user1', 'email' => 'user1@here', 'notifications_enabled' => 1))); + $this->assertNotFalse($u->create(array('username' => 'user1', 'email' => 'user1@here', 'notifications_enabled' => 1))); // No email + Notifications enabled - $this->assertTrue($u->create(array('username' => 'user2', 'email' => '', 'notifications_enabled' => 1))); + $this->assertNotFalse($u->create(array('username' => 'user2', 'email' => '', 'notifications_enabled' => 1))); // Email + Notifications enabled - $this->assertTrue($u->create(array('username' => 'user3', 'email' => 'user3@here', 'notifications_enabled' => 1))); + $this->assertNotFalse($u->create(array('username' => 'user3', 'email' => 'user3@here', 'notifications_enabled' => 1))); // No email + notifications disabled - $this->assertTrue($u->create(array('username' => 'user4'))); + $this->assertNotFalse($u->create(array('username' => 'user4'))); // We allow all users to be member of our projects $this->assertTrue($pp->allowUser(1, 1)); diff --git a/tests/units/ProjectPermissionTest.php b/tests/units/ProjectPermissionTest.php index 394e0ac5..b169b63e 100644 --- a/tests/units/ProjectPermissionTest.php +++ b/tests/units/ProjectPermissionTest.php @@ -11,8 +11,8 @@ class ProjectPermissionTest extends Base public function testAllowEverybody() { $user = new User($this->container); - $this->assertTrue($user->create(array('username' => 'unittest#1', 'password' => 'unittest'))); - $this->assertTrue($user->create(array('username' => 'unittest#2', 'password' => 'unittest'))); + $this->assertNotFalse($user->create(array('username' => 'unittest#1', 'password' => 'unittest'))); + $this->assertNotFalse($user->create(array('username' => 'unittest#2', 'password' => 'unittest'))); $p = new Project($this->container); $pp = new ProjectPermission($this->container); diff --git a/tests/units/TaskPermissionTest.php b/tests/units/TaskPermissionTest.php index 963864b2..4b0b2b61 100644 --- a/tests/units/TaskPermissionTest.php +++ b/tests/units/TaskPermissionTest.php @@ -20,8 +20,8 @@ class TaskPermissionTest extends Base $p = new Project($this->container); $u = new User($this->container); - $this->assertTrue($u->create(array('username' => 'toto', 'password' => '123456'))); - $this->assertTrue($u->create(array('username' => 'toto2', 'password' => '123456'))); + $this->assertNotFalse($u->create(array('username' => 'toto', 'password' => '123456'))); + $this->assertNotFalse($u->create(array('username' => 'toto2', 'password' => '123456'))); $this->assertEquals(1, $p->create(array('name' => 'Project #1'))); $this->assertEquals(1, $tc->create(array('title' => 'Task #1', 'project_id' => 1, 'creator_id' => 1))); $this->assertEquals(2, $tc->create(array('title' => 'Task #2', 'project_id' => 1, 'creator_id' => 2))); diff --git a/tests/units/UserTest.php b/tests/units/UserTest.php index ebb76a92..6e535a35 100644 --- a/tests/units/UserTest.php +++ b/tests/units/UserTest.php @@ -73,8 +73,8 @@ class UserTest extends Base public function testCreate() { $u = new User($this->container); - $this->assertTrue($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); - $this->assertTrue($u->create(array('username' => 'titi', 'is_ldap_user' => 1))); + $this->assertNotFalse($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); + $this->assertNotFalse($u->create(array('username' => 'titi', 'is_ldap_user' => 1))); $this->assertFalse($u->create(array('username' => 'toto'))); $user = $u->getById(1); @@ -105,7 +105,7 @@ class UserTest extends Base public function testUpdate() { $u = new User($this->container); - $this->assertTrue($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); + $this->assertNotFalse($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); $this->assertTrue($u->update(array('id' => 2, 'username' => 'biloute'))); $user = $u->getById(2); @@ -124,7 +124,7 @@ class UserTest extends Base $tf = new TaskFinder($this->container); $p = new Project($this->container); - $this->assertTrue($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); + $this->assertNotFalse($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); $this->assertEquals(1, $p->create(array('name' => 'Project #1'))); $this->assertEquals(1, $tc->create(array('title' => 'Task #1', 'project_id' => 1, 'owner_id' => 2))); |