Differential D15171 Diff 36647 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 |