Ensure project tags are removed when the project is removed (PR #3250)
This commit is contained in:
parent
5b7e137f76
commit
3cf9484644
|
|
@ -6,6 +6,10 @@ Improvements:
|
|||
* Add wildcard search for task reference field
|
||||
* Improve automated action TaskAssignColorOnDueDate to update task only when necessary
|
||||
|
||||
Bug fixes:
|
||||
|
||||
* Ensure project tags are removed when the project is removed
|
||||
|
||||
Version 1.0.43 (April 30, 2017)
|
||||
-------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -462,7 +462,13 @@ class ProjectModel extends Base
|
|||
*/
|
||||
public function remove($project_id)
|
||||
{
|
||||
return $this->db->table(self::TABLE)->eq('id', $project_id)->remove();
|
||||
$this->db->startTransaction();
|
||||
|
||||
$this->db->table(TagModel::TABLE)->eq('project_id', $project_id)->remove();
|
||||
$result = $this->db->table(self::TABLE)->eq('id', $project_id)->remove();
|
||||
|
||||
$this->db->closeTransaction();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,7 +2,13 @@
|
|||
|
||||
require_once __DIR__.'/../Base.php';
|
||||
|
||||
use Kanboard\Api\Procedure\ProjectPermissionProcedure;
|
||||
use Kanboard\Core\Security\Role;
|
||||
use Kanboard\Core\Translator;
|
||||
use Kanboard\Model\ColumnModel;
|
||||
use Kanboard\Model\ProjectPermissionModel;
|
||||
use Kanboard\Model\SwimlaneModel;
|
||||
use Kanboard\Model\TagModel;
|
||||
use Kanboard\Subscriber\ProjectModificationDateSubscriber;
|
||||
use Kanboard\Model\ProjectModel;
|
||||
use Kanboard\Model\UserModel;
|
||||
|
|
@ -207,6 +213,68 @@ class ProjectModelTest extends Base
|
|||
$this->assertFalse($projectModel->remove(1234));
|
||||
}
|
||||
|
||||
public function testRemoveTagsOnProjectRemove()
|
||||
{
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$tagModel = new TagModel($this->container);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
|
||||
$this->assertNotFalse($tagModel->create(1, 'TestTag'));
|
||||
|
||||
$this->assertCount(1, $tagModel->getAllByProject(1));
|
||||
|
||||
$this->assertTrue($projectModel->remove(1));
|
||||
|
||||
$this->assertCount(0, $tagModel->getAllByProject(1));
|
||||
}
|
||||
|
||||
public function testRemoveSwimlaneOnProjectRemove()
|
||||
{
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$swimlaneModel = new SwimlaneModel($this->container);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
|
||||
|
||||
$swimlaneId = $swimlaneModel->create(1, 'TestSwimlane');
|
||||
$this->assertNotFalse($swimlaneId);
|
||||
|
||||
$this->assertTrue($projectModel->remove(1));
|
||||
$this->assertNull($swimlaneModel->getById($swimlaneId));
|
||||
}
|
||||
|
||||
public function testRemoveColumnOnProjectRemove()
|
||||
{
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$columnModel = new ColumnModel($this->container);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
|
||||
|
||||
$columnId = $columnModel->create(1, 'TestColumn');
|
||||
$this->assertNotFalse($columnId);
|
||||
|
||||
$this->assertTrue($projectModel->remove(1));
|
||||
$this->assertNull($columnModel->getById($columnId));
|
||||
}
|
||||
|
||||
public function testRemovePermissionOnProjectRemove()
|
||||
{
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$userModel = new UserModel($this->container);
|
||||
|
||||
$permissionModel = new ProjectPermissionModel($this->container);
|
||||
$permissionProcedure = new ProjectPermissionProcedure($this->container);
|
||||
|
||||
$userId = $userModel->create(array('username' => 'user1'));
|
||||
$this->assertNotFalse($userId);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
|
||||
$permissionProcedure->addProjectUser(1, $userId, Role::PROJECT_MEMBER);
|
||||
|
||||
$this->assertTrue($permissionModel->isUserAllowed(1, $userId));
|
||||
$this->assertTrue($projectModel->remove(1));
|
||||
$this->assertFalse($permissionModel->isUserAllowed(1, $userId));
|
||||
}
|
||||
|
||||
public function testEnable()
|
||||
{
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
|
|
|
|||
Loading…
Reference in New Issue