Differential D15171 Diff 36648 src/applications/project/__tests__/PhabricatorProjectCoreTestCase.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/__tests__/PhabricatorProjectCoreTestCase.php
| Show First 20 Lines • Show All 966 Lines • ▼ Show 20 Lines | $options = array( | ||||
| 'beforePHID' => $task1->getPHID(), | 'beforePHID' => $task1->getPHID(), | ||||
| ); | ); | ||||
| $this->moveToColumn($user, $board, $task2, $column, $column, $options); | $this->moveToColumn($user, $board, $task2, $column, $column, $options); | ||||
| $expect = array( | $expect = array( | ||||
| $task2->getPHID(), | $task2->getPHID(), | ||||
| $task1->getPHID(), | $task1->getPHID(), | ||||
| ); | ); | ||||
| $this->assertTasksInColumn($expect, $user, $board, $column); | $this->assertTasksInColumn($expect, $user, $board, $column); | ||||
| } | |||||
| public function testMilestoneMoves() { | |||||
| $user = $this->createUser(); | |||||
| $user->save(); | |||||
| $board = $this->createProject($user); | |||||
| $backlog = $this->addColumn($user, $board, 0); | |||||
| // Create a task into the backlog. | |||||
| $task = $this->newTask($user, array($board)); | |||||
| $expect = array( | |||||
| $backlog->getPHID(), | |||||
| ); | |||||
| $this->assertColumns($expect, $user, $board, $task); | |||||
| $milestone = $this->createProject($user, $board, true); | |||||
| $this->addProjectTags($user, $task, array($milestone->getPHID())); | |||||
| // We just want the side effect of looking at the board: creation of the | |||||
| // milestone column. | |||||
| $this->loadColumns($user, $board, $task); | |||||
| $column = id(new PhabricatorProjectColumnQuery()) | |||||
| ->setViewer($user) | |||||
| ->withProjectPHIDs(array($board->getPHID())) | |||||
| ->withProxyPHIDs(array($milestone->getPHID())) | |||||
| ->executeOne(); | |||||
| $this->assertTrue((bool)$column); | |||||
| // Moving the task to the milestone should have moved it to the milestone | |||||
| // column. | |||||
| $expect = array( | |||||
| $column->getPHID(), | |||||
| ); | |||||
| $this->assertColumns($expect, $user, $board, $task); | |||||
| } | } | ||||
| private function moveToColumn( | private function moveToColumn( | ||||
| PhabricatorUser $viewer, | PhabricatorUser $viewer, | ||||
| PhabricatorProject $board, | PhabricatorProject $board, | ||||
| ManiphestTask $task, | ManiphestTask $task, | ||||
| PhabricatorProjectColumn $src, | PhabricatorProjectColumn $src, | ||||
| PhabricatorProjectColumn $dst, | PhabricatorProjectColumn $dst, | ||||
| Show All 25 Lines | $editor = id(new ManiphestTransactionEditor()) | ||||
| ->applyTransactions($task, $xactions); | ->applyTransactions($task, $xactions); | ||||
| } | } | ||||
| private function assertColumns( | private function assertColumns( | ||||
| array $expect, | array $expect, | ||||
| PhabricatorUser $viewer, | PhabricatorUser $viewer, | ||||
| PhabricatorProject $board, | PhabricatorProject $board, | ||||
| ManiphestTask $task) { | ManiphestTask $task) { | ||||
| $column_phids = $this->loadColumns($viewer, $board, $task); | |||||
| $this->assertEqual($expect, $column_phids); | |||||
| } | |||||
| private function loadColumns( | |||||
| PhabricatorUser $viewer, | |||||
| PhabricatorProject $board, | |||||
| ManiphestTask $task) { | |||||
| $engine = id(new PhabricatorBoardLayoutEngine()) | $engine = id(new PhabricatorBoardLayoutEngine()) | ||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->setBoardPHIDs(array($board->getPHID())) | ->setBoardPHIDs(array($board->getPHID())) | ||||
| ->setObjectPHIDs( | ->setObjectPHIDs( | ||||
| array( | array( | ||||
| $task->getPHID(), | $task->getPHID(), | ||||
| )) | )) | ||||
| ->executeLayout(); | ->executeLayout(); | ||||
| $columns = $engine->getObjectColumns($board->getPHID(), $task->getPHID()); | $columns = $engine->getObjectColumns($board->getPHID(), $task->getPHID()); | ||||
| $column_phids = mpull($columns, 'getPHID'); | $column_phids = mpull($columns, 'getPHID'); | ||||
| $column_phids = array_values($column_phids); | $column_phids = array_values($column_phids); | ||||
| $this->assertEqual($expect, $column_phids); | return $column_phids; | ||||
| } | } | ||||
| private function assertTasksInColumn( | private function assertTasksInColumn( | ||||
| array $expect, | array $expect, | ||||
| PhabricatorUser $viewer, | PhabricatorUser $viewer, | ||||
| PhabricatorProject $board, | PhabricatorProject $board, | ||||
| PhabricatorProjectColumn $column) { | PhabricatorProjectColumn $column) { | ||||
| ▲ Show 20 Lines • Show All 191 Lines • ▼ Show 20 Lines | if ($parent) { | ||||
| $xactions[] = id(new PhabricatorProjectTransaction()) | $xactions[] = id(new PhabricatorProjectTransaction()) | ||||
| ->setTransactionType(PhabricatorProjectTransaction::TYPE_PARENT) | ->setTransactionType(PhabricatorProjectTransaction::TYPE_PARENT) | ||||
| ->setNewValue($parent->getPHID()); | ->setNewValue($parent->getPHID()); | ||||
| } | } | ||||
| } | } | ||||
| $this->applyTransactions($project, $user, $xactions); | $this->applyTransactions($project, $user, $xactions); | ||||
| // Force these values immediately; they are normally updated by the | |||||
| // index engine. | |||||
| if ($parent) { | |||||
| if ($is_milestone) { | |||||
| $parent->setHasMilestones(1)->save(); | |||||
| } else { | |||||
| $parent->setHasSubprojects(1)->save(); | |||||
| } | |||||
| } | |||||
| return $project; | return $project; | ||||
| } | } | ||||
| private function setViewPolicy( | private function setViewPolicy( | ||||
| PhabricatorProject $project, | PhabricatorProject $project, | ||||
| PhabricatorUser $user, | PhabricatorUser $user, | ||||
| $policy) { | $policy) { | ||||
| ▲ Show 20 Lines • Show All 111 Lines • Show Last 20 Lines | |||||