Add project join/leave tests

Summary: Add test coverage for joining and leaving projects.

Test Plan: Ran tests.

Reviewers: vrana, btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T603

Differential Revision: https://secure.phabricator.com/D3220
This commit is contained in:
epriestley
2012-08-11 07:05:20 -07:00
parent bd0be1c650
commit b00c28a360
4 changed files with 192 additions and 33 deletions

View File

@@ -31,7 +31,11 @@ final class PhabricatorProjectUpdateController
$request = $this->getRequest();
$user = $request->getUser();
$project = id(new PhabricatorProject())->load($this->id);
$project = id(new PhabricatorProjectQuery())
->setViewer($user)
->needMembers(true)
->withIDs(array($this->id))
->executeOne();
if (!$project) {
return new Aphront404Response();
}
@@ -51,44 +55,14 @@ final class PhabricatorProjectUpdateController
$project_uri = '/project/view/'.$project->getID().'/';
if ($process_action) {
$xactions = array();
switch ($this->action) {
case 'join':
$member_phids = $project->loadMemberPHIDs();
$member_map = array_fill_keys($member_phids, true);
if (empty($member_map[$user->getPHID()])) {
$member_map[$user->getPHID()] = true;
$xaction = new PhabricatorProjectTransaction();
$xaction->setTransactionType(
PhabricatorProjectTransactionType::TYPE_MEMBERS);
$xaction->setNewValue(array_keys($member_map));
$xactions[] = $xaction;
}
PhabricatorProjectEditor::applyJoinProject($project, $user);
break;
case 'leave':
$member_phids = $project->loadMemberPHIDs();
$member_map = array_fill_keys($member_phids, true);
if (isset($member_map[$user->getPHID()])) {
unset($member_map[$user->getPHID()]);
$xaction = new PhabricatorProjectTransaction();
$xaction->setTransactionType(
PhabricatorProjectTransactionType::TYPE_MEMBERS);
$xaction->setNewValue(array_keys($member_map));
$xactions[] = $xaction;
}
PhabricatorProjectEditor::applyLeaveProject($project, $user);
break;
}
if ($xactions) {
$editor = new PhabricatorProjectEditor($project);
$editor->setUser($user);
$editor->applyTransactions($xactions);
}
return id(new AphrontRedirectResponse())->setURI($project_uri);
}