From 9b2a32af78ef8fb5424398dc57e3c3f906026272 Mon Sep 17 00:00:00 2001
From: Frederic Guillot <fred@kanboard.net>
Date: Sat, 23 Jul 2016 18:33:31 -0400
Subject: Add new automatic action to move a task to another column when closed

---
 tests/units/Action/TaskMoveColumnClosedTest.php | 91 +++++++++++++++++++++++++
 1 file changed, 91 insertions(+)
 create mode 100644 tests/units/Action/TaskMoveColumnClosedTest.php

(limited to 'tests')

diff --git a/tests/units/Action/TaskMoveColumnClosedTest.php b/tests/units/Action/TaskMoveColumnClosedTest.php
new file mode 100644
index 00000000..318b995d
--- /dev/null
+++ b/tests/units/Action/TaskMoveColumnClosedTest.php
@@ -0,0 +1,91 @@
+<?php
+
+use Kanboard\Action\TaskMoveColumnClosed;
+use Kanboard\EventBuilder\TaskEventBuilder;
+use Kanboard\Model\ProjectModel;
+use Kanboard\Model\TaskCreationModel;
+use Kanboard\Model\TaskFinderModel;
+use Kanboard\Model\TaskModel;
+
+require_once __DIR__.'/../Base.php';
+
+class TaskMoveColumnClosedTest extends Base
+{
+    public function testSuccess()
+    {
+        $projectModel = new ProjectModel($this->container);
+        $taskCreationModel = new TaskCreationModel($this->container);
+        $taskFinderModel = new TaskFinderModel($this->container);
+
+        $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+        $this->assertEquals(2, $projectModel->create(array('name' => 'test2')));
+        $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'is_active' => 0)));
+
+        $event = TaskEventBuilder::getInstance($this->container)
+            ->withTaskId(1)
+            ->buildEvent();
+
+        $action = new TaskMoveColumnClosed($this->container);
+        $action->setProjectId(1);
+        $action->setParam('dest_column_id', 2);
+
+        $this->assertTrue($action->execute($event, TaskModel::EVENT_CLOSE));
+
+        $task = $taskFinderModel->getById(1);
+        $this->assertNotEmpty($task);
+        $this->assertEquals('test', $task['title']);
+        $this->assertEquals(2, $task['column_id']);
+    }
+
+    public function testWhenTaskIsOpen()
+    {
+        $projectModel = new ProjectModel($this->container);
+        $taskCreationModel = new TaskCreationModel($this->container);
+        $taskFinderModel = new TaskFinderModel($this->container);
+
+        $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+        $this->assertEquals(2, $projectModel->create(array('name' => 'test2')));
+        $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test')));
+
+        $event = TaskEventBuilder::getInstance($this->container)
+            ->withTaskId(1)
+            ->buildEvent();
+
+        $action = new TaskMoveColumnClosed($this->container);
+        $action->setProjectId(1);
+        $action->setParam('dest_column_id', 2);
+
+        $this->assertFalse($action->execute($event, TaskModel::EVENT_CLOSE));
+
+        $task = $taskFinderModel->getById(1);
+        $this->assertNotEmpty($task);
+        $this->assertEquals('test', $task['title']);
+        $this->assertEquals(1, $task['column_id']);
+    }
+
+    public function testWhenTaskIsAlreadyInDestinationColumn()
+    {
+        $projectModel = new ProjectModel($this->container);
+        $taskCreationModel = new TaskCreationModel($this->container);
+        $taskFinderModel = new TaskFinderModel($this->container);
+
+        $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
+        $this->assertEquals(2, $projectModel->create(array('name' => 'test2')));
+        $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'is_active' => 0, 'column_id' => 2)));
+
+        $event = TaskEventBuilder::getInstance($this->container)
+            ->withTaskId(1)
+            ->buildEvent();
+
+        $action = new TaskMoveColumnClosed($this->container);
+        $action->setProjectId(1);
+        $action->setParam('dest_column_id', 2);
+
+        $this->assertFalse($action->execute($event, TaskModel::EVENT_CLOSE));
+
+        $task = $taskFinderModel->getById(1);
+        $this->assertNotEmpty($task);
+        $this->assertEquals('test', $task['title']);
+        $this->assertEquals(2, $task['column_id']);
+    }
+}
-- 
cgit v1.2.3