mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-20 10:48:40 +01:00
145 lines
4.3 KiB
PHP
145 lines
4.3 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 policy error as another user tries to add
|
||
|
$caught = null;
|
||
|
try {
|
||
|
$this->addParticipants(
|
||
|
$friend_2,
|
||
|
$conpherence,
|
||
|
array($friend_3->getPHID()));
|
||
|
} catch (PhabricatorPolicyException $ex) {
|
||
|
$caught = $ex;
|
||
|
}
|
||
|
$this->assertTrue($caught instanceof PhabricatorPolicyException);
|
||
|
|
||
|
// update edit policy so user has a chance
|
||
|
$this->changeEditPolicy($creator, $conpherence, 'users');
|
||
|
// 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());
|
||
|
}
|
||
|
|
||
|
private function createRoom(
|
||
|
PhabricatorUser $creator,
|
||
|
array $participant_phids) {
|
||
|
|
||
|
$conpherence = ConpherenceThread::initializeNewRoom($creator);
|
||
|
|
||
|
$xactions = array();
|
||
|
$xactions[] = id(new ConpherenceTransaction())
|
||
|
->setTransactionType(ConpherenceTransactionType::TYPE_PARTICIPANTS)
|
||
|
->setNewValue(array('+' => $participant_phids));
|
||
|
$xactions[] = id(new ConpherenceTransaction())
|
||
|
->setTransactionType(ConpherenceTransactionType::TYPE_TITLE)
|
||
|
->setNewValue('Test');
|
||
|
|
||
|
id(new ConpherenceEditor())
|
||
|
->setActor($creator)
|
||
|
->setContentSource(PhabricatorContentSource::newConsoleSource())
|
||
|
->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(PhabricatorContentSource::newConsoleSource())
|
||
|
->setContinueOnNoEffect(true)
|
||
|
->applyTransactions($room, $xactions);
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|