diff options
| author | Teamjungla{CODE} <junglacode@gmail.com> | 2016-08-20 13:47:12 -0500 | 
|---|---|---|
| committer | Teamjungla{CODE} <junglacode@gmail.com> | 2016-08-20 13:47:12 -0500 | 
| commit | fe8e9cdcfe3afc1475c7e7f4392d2b2cc601a12b (patch) | |
| tree | 001403874e9e3716de7c6d51a9f536e9b3c3be5e /tests/units/Model/ActionModelTest.php | |
| parent | b1e795fc5b45369f7b9b565b1e106d2673361977 (diff) | |
| parent | 98efcf21e355ed6ac3827058b99df86ca67c75bb (diff) | |
Merge branch 'stable' of https://github.com/kanboard/kanboard
Diffstat (limited to 'tests/units/Model/ActionModelTest.php')
| -rw-r--r-- | tests/units/Model/ActionModelTest.php | 527 | 
1 files changed, 527 insertions, 0 deletions
diff --git a/tests/units/Model/ActionModelTest.php b/tests/units/Model/ActionModelTest.php new file mode 100644 index 00000000..4e21a999 --- /dev/null +++ b/tests/units/Model/ActionModelTest.php @@ -0,0 +1,527 @@ +<?php + +require_once __DIR__.'/../Base.php'; + +use Kanboard\Model\ActionModel; +use Kanboard\Model\ProjectModel; +use Kanboard\Model\TaskModel; +use Kanboard\Model\UserModel; +use Kanboard\Model\ColumnModel; +use Kanboard\Model\CategoryModel; +use Kanboard\Model\ProjectUserRoleModel; +use Kanboard\Core\Security\Role; + +class ActionModelTest extends Base +{ +    public function testCreate() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); +    } + +    public function testRemove() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertNotEmpty($actionModel->getById(1)); +        $this->assertTrue($actionModel->remove(1)); +        $this->assertEmpty($actionModel->getById(1)); +    } + +    public function testGetById() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $action = $actionModel->getById(1); +        $this->assertNotEmpty($action); +        $this->assertEquals(1, $action['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $action['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $action['event_name']); +        $this->assertEquals(array('column_id' => 1, 'color_id' => 'red'), $action['params']); +    } + +    public function testGetProjectId() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertEquals(1, $actionModel->getProjectId(1)); +        $this->assertSame(0, $actionModel->getProjectId(42)); +    } + +    public function testGetAll() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertEquals(2, $actionModel->create(array( +            'project_id' => 2, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 6, 'color_id' => 'blue'), +        ))); + +        $actions = $actionModel->getAll(); +        $this->assertCount(2, $actions); + +        $this->assertEquals(1, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 1, 'color_id' => 'red'), $actions[0]['params']); + +        $this->assertEquals(2, $actions[1]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[1]['action_name']); +        $this->assertEquals(TaskModel::EVENT_MOVE_COLUMN, $actions[1]['event_name']); +        $this->assertEquals(array('column_id' => 6, 'color_id' => 'blue'), $actions[1]['params']); +    } + +    public function testGetAllByProject() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertEquals(2, $actionModel->create(array( +            'project_id' => 2, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 6, 'color_id' => 'blue'), +        ))); + +        $actions = $actionModel->getAllByProject(1); +        $this->assertCount(1, $actions); + +        $this->assertEquals(1, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 1, 'color_id' => 'red'), $actions[0]['params']); + + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_MOVE_COLUMN, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 6, 'color_id' => 'blue'), $actions[0]['params']); +    } + +    public function testGetAllByUser() +    { +        $projectModel = new ProjectModel($this->container); +        $projectUserRoleModel = new ProjectUserRoleModel($this->container); +        $userModel = new UserModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); +        $this->assertEquals(3, $projectModel->create(array('name' => 'test4', 'is_active' => 0))); + +        $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); +        $this->assertEquals(3, $userModel->create(array('username' => 'user2'))); + +        $this->assertTrue($projectUserRoleModel->addUser(1, 2, Role::PROJECT_VIEWER)); +        $this->assertTrue($projectUserRoleModel->addUser(2, 3, Role::PROJECT_MANAGER)); +        $this->assertTrue($projectUserRoleModel->addUser(3, 3, Role::PROJECT_MANAGER)); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertEquals(2, $actionModel->create(array( +            'project_id' => 2, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 6, 'color_id' => 'blue'), +        ))); + +        $this->assertEquals(3, $actionModel->create(array( +            'project_id' => 3, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 10, 'color_id' => 'green'), +        ))); + +        $actions = $actionModel->getAllByUser(1); +        $this->assertCount(0, $actions); + +        $actions = $actionModel->getAllByUser(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(1, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 1, 'color_id' => 'red'), $actions[0]['params']); + +        $actions = $actionModel->getAllByUser(3); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_MOVE_COLUMN, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 6, 'color_id' => 'blue'), $actions[0]['params']); +    } + +    public function testDuplicateWithColumnAndColorParameter() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 5, 'color_id' => 'red'), $actions[0]['params']); +    } + +    public function testDuplicateWithColumnsParameter() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('src_column_id' => 1, 'dst_column_id' => 2, 'dest_column_id' => 3), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $actions[0]['event_name']); +        $this->assertEquals(array('src_column_id' => 5, 'dst_column_id' => 6, 'dest_column_id' => 7), $actions[0]['params']); +    } + +    public function testDuplicateWithColumnParameterNotfound() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); +        $columnModel = new ColumnModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertTrue($columnModel->update(2, 'My unique column')); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 1, 'color_id' => 'red'), +        ))); + +        $this->assertEquals(2, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignColorColumn', +            'params' => array('column_id' => 2, 'color_id' => 'green'), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorColumn', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 5, 'color_id' => 'red'), $actions[0]['params']); +    } + +    public function testDuplicateWithProjectParameter() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); +        $this->assertEquals(3, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CLOSE, +            'action_name' => '\Kanboard\Action\TaskDuplicateAnotherProject', +            'params' => array('column_id' => 1, 'project_id' => 3), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskDuplicateAnotherProject', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CLOSE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 5, 'project_id' => 3), $actions[0]['params']); +    } + +    public function testDuplicateWithProjectParameterIdenticalToDestination() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CLOSE, +            'action_name' => '\Kanboard\Action\TaskDuplicateAnotherProject', +            'params' => array('column_id' => 1, 'project_id' => 2), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(0, $actions); +    } + +    public function testDuplicateWithUserParameter() +    { +        $projectUserRoleModel = new ProjectUserRoleModel($this->container); +        $userModel = new UserModel($this->container); +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); + +        $this->assertTrue($projectUserRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); +        $this->assertTrue($projectUserRoleModel->addUser(2, 2, Role::PROJECT_MEMBER)); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignSpecificUser', +            'params' => array('column_id' => 1, 'user_id' => 2), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignSpecificUser', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_MOVE_COLUMN, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 5, 'user_id' => 2), $actions[0]['params']); +    } + +    public function testDuplicateWithUserParameterButNotAssignable() +    { +        $projectUserRoleModel = new ProjectUserRoleModel($this->container); +        $userModel = new UserModel($this->container); +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); + +        $this->assertTrue($projectUserRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); +        $this->assertTrue($projectUserRoleModel->addUser(2, 2, Role::PROJECT_VIEWER)); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignSpecificUser', +            'params' => array('column_id' => 1, 'user_id' => 2), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(0, $actions); +    } + +    public function testDuplicateWithUserParameterButNotAvailable() +    { +        $projectUserRoleModel = new ProjectUserRoleModel($this->container); +        $userModel = new UserModel($this->container); +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); + +        $this->assertTrue($projectUserRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_MOVE_COLUMN, +            'action_name' => '\Kanboard\Action\TaskAssignSpecificUser', +            'params' => array('column_id' => 1, 'owner_id' => 2), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(0, $actions); +    } + +    public function testDuplicateWithCategoryParameter() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); +        $categoryModel = new CategoryModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $categoryModel->create(array('name' => 'c1', 'project_id' => 1))); +        $this->assertEquals(2, $categoryModel->create(array('name' => 'c1', 'project_id' => 2))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE_UPDATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorCategory', +            'params' => array('column_id' => 1, 'category_id' => 1), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(1, $actions); + +        $this->assertEquals(2, $actions[0]['project_id']); +        $this->assertEquals('\Kanboard\Action\TaskAssignColorCategory', $actions[0]['action_name']); +        $this->assertEquals(TaskModel::EVENT_CREATE_UPDATE, $actions[0]['event_name']); +        $this->assertEquals(array('column_id' => 5, 'category_id' => 2), $actions[0]['params']); +    } + +    public function testDuplicateWithCategoryParameterButDifferentName() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); +        $categoryModel = new CategoryModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $categoryModel->create(array('name' => 'c1', 'project_id' => 1))); +        $this->assertEquals(2, $categoryModel->create(array('name' => 'c2', 'project_id' => 2))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE_UPDATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorCategory', +            'params' => array('column_id' => 1, 'category_id' => 1), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(0, $actions); +    } + +    public function testDuplicateWithCategoryParameterButNotFound() +    { +        $projectModel = new ProjectModel($this->container); +        $actionModel = new ActionModel($this->container); +        $categoryModel = new CategoryModel($this->container); + +        $this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); +        $this->assertEquals(2, $projectModel->create(array('name' => 'test2'))); + +        $this->assertEquals(1, $categoryModel->create(array('name' => 'c1', 'project_id' => 1))); + +        $this->assertEquals(1, $actionModel->create(array( +            'project_id' => 1, +            'event_name' => TaskModel::EVENT_CREATE_UPDATE, +            'action_name' => '\Kanboard\Action\TaskAssignColorCategory', +            'params' => array('column_id' => 1, 'category_id' => 1), +        ))); + +        $this->assertTrue($actionModel->duplicate(1, 2)); + +        $actions = $actionModel->getAllByProject(2); +        $this->assertCount(0, $actions); +    } +}  | 
