mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-24 15:52:41 +01:00
a7ebfc12c0
Summary: Begin converting Conpherence to ModularTransactions, this converts title, topic, and picture to use modular transactions. Participants seems hairy so I'll do that in another diff Test Plan: Create a room with a topic, change room name, topic. Add people, remove people. Set a room image. Unset topic. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D17668
157 lines
4.7 KiB
PHP
157 lines
4.7 KiB
PHP
<?php
|
|
|
|
final class ConpherenceRoomTestCase extends ConpherenceTestCase {
|
|
|
|
protected function getPhabricatorTestCaseConfiguration() {
|
|
return array(
|
|
self::PHABRICATOR_TESTCONFIG_BUILD_STORAGE_FIXTURES => true,
|
|
);
|
|
}
|
|
|
|
public function testOneUserRoomCreate() {
|
|
$creator = $this->generateNewTestUser();
|
|
$participant_phids = array($creator->getPHID());
|
|
|
|
$conpherence = $this->createRoom($creator, $participant_phids);
|
|
|
|
$this->assertTrue((bool)$conpherence->getID());
|
|
$this->assertEqual(1, count($conpherence->getParticipants()));
|
|
$this->assertEqual(
|
|
$participant_phids,
|
|
$conpherence->getRecentParticipantPHIDs());
|
|
}
|
|
|
|
public function testNUserRoomCreate() {
|
|
$creator = $this->generateNewTestUser();
|
|
$friend_1 = $this->generateNewTestUser();
|
|
$friend_2 = $this->generateNewTestUser();
|
|
$friend_3 = $this->generateNewTestUser();
|
|
|
|
$participant_phids = array(
|
|
$creator->getPHID(),
|
|
$friend_1->getPHID(),
|
|
$friend_2->getPHID(),
|
|
$friend_3->getPHID(),
|
|
);
|
|
|
|
$conpherence = $this->createRoom($creator, $participant_phids);
|
|
|
|
$this->assertTrue((bool)$conpherence->getID());
|
|
$this->assertEqual(4, count($conpherence->getParticipants()));
|
|
$this->assertEqual(
|
|
$participant_phids,
|
|
$conpherence->getRecentParticipantPHIDs());
|
|
}
|
|
|
|
public function testRoomParticipantAddition() {
|
|
$creator = $this->generateNewTestUser();
|
|
$friend_1 = $this->generateNewTestUser();
|
|
$friend_2 = $this->generateNewTestUser();
|
|
$friend_3 = $this->generateNewTestUser();
|
|
|
|
$participant_phids = array(
|
|
$creator->getPHID(),
|
|
$friend_1->getPHID(),
|
|
);
|
|
|
|
$conpherence = $this->createRoom($creator, $participant_phids);
|
|
|
|
$this->assertTrue((bool)$conpherence->getID());
|
|
$this->assertEqual(2, count($conpherence->getParticipants()));
|
|
$this->assertEqual(
|
|
$participant_phids,
|
|
$conpherence->getRecentParticipantPHIDs());
|
|
|
|
// test add by creator
|
|
$participant_phids[] = $friend_2->getPHID();
|
|
$this->addParticipants($creator, $conpherence, array($friend_2->getPHID()));
|
|
$this->assertEqual(
|
|
$participant_phids,
|
|
$conpherence->getRecentParticipantPHIDs());
|
|
|
|
// test add by other participant, so recent participation should
|
|
// meaningfully change
|
|
$participant_phids = array(
|
|
$friend_2->getPHID(), // actor
|
|
$creator->getPHID(), // last actor
|
|
$friend_1->getPHID(),
|
|
$friend_3->getPHID(), // new addition
|
|
);
|
|
$this->addParticipants(
|
|
$friend_2,
|
|
$conpherence,
|
|
array($friend_3->getPHID()));
|
|
$this->assertEqual(
|
|
$participant_phids,
|
|
$conpherence->getRecentParticipantPHIDs());
|
|
}
|
|
|
|
public function testRoomParticipantDeletion() {
|
|
$creator = $this->generateNewTestUser();
|
|
$friend_1 = $this->generateNewTestUser();
|
|
$friend_2 = $this->generateNewTestUser();
|
|
$friend_3 = $this->generateNewTestUser();
|
|
|
|
$participant_map = array(
|
|
$creator->getPHID() => $creator,
|
|
$friend_1->getPHID() => $friend_1,
|
|
$friend_2->getPHID() => $friend_2,
|
|
$friend_3->getPHID() => $friend_3,
|
|
);
|
|
|
|
$conpherence = $this->createRoom(
|
|
$creator,
|
|
array_keys($participant_map));
|
|
|
|
foreach ($participant_map as $phid => $user) {
|
|
$this->removeParticipants($user, $conpherence, array($phid));
|
|
unset($participant_map[$phid]);
|
|
$this->assertEqual(
|
|
count($participant_map),
|
|
count($conpherence->getParticipants()));
|
|
}
|
|
}
|
|
|
|
private function createRoom(
|
|
PhabricatorUser $creator,
|
|
array $participant_phids) {
|
|
|
|
$conpherence = ConpherenceThread::initializeNewRoom($creator);
|
|
|
|
$xactions = array();
|
|
$xactions[] = id(new ConpherenceTransaction())
|
|
->setTransactionType(ConpherenceTransaction::TYPE_PARTICIPANTS)
|
|
->setNewValue(array('+' => $participant_phids));
|
|
$xactions[] = id(new ConpherenceTransaction())
|
|
->setTransactionType(
|
|
ConpherenceThreadTitleTransaction::TRANSACTIONTYPE)
|
|
->setNewValue(pht('Test'));
|
|
|
|
id(new ConpherenceEditor())
|
|
->setActor($creator)
|
|
->setContentSource($this->newContentSource())
|
|
->setContinueOnNoEffect(true)
|
|
->applyTransactions($conpherence, $xactions);
|
|
|
|
return $conpherence;
|
|
}
|
|
|
|
private function changeEditPolicy(
|
|
PhabricatorUser $actor,
|
|
ConpherenceThread $room,
|
|
$policy) {
|
|
|
|
$xactions = array();
|
|
$xactions[] = id(new ConpherenceTransaction())
|
|
->setTransactionType(PhabricatorTransactions::TYPE_EDIT_POLICY)
|
|
->setNewValue($policy);
|
|
|
|
id(new ConpherenceEditor())
|
|
->setActor($actor)
|
|
->setContentSource($this->newContentSource())
|
|
->setContinueOnNoEffect(true)
|
|
->applyTransactions($room, $xactions);
|
|
}
|
|
|
|
|
|
}
|