[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorManiphestTaskTestDataGenerator 4 extends PhabricatorTestDataGenerator { 5 6 public function generate() { 7 $authorPHID = $this->loadPhabrictorUserPHID(); 8 $author = id(new PhabricatorUser()) 9 ->loadOneWhere('phid = %s', $authorPHID); 10 $task = ManiphestTask::initializeNewTask($author) 11 ->setSubPriority($this->generateTaskSubPriority()) 12 ->setTitle($this->generateTitle()); 13 14 $content_source = PhabricatorContentSource::newForSource( 15 PhabricatorContentSource::SOURCE_UNKNOWN, 16 array()); 17 18 $template = new ManiphestTransaction(); 19 // Accumulate Transactions 20 $changes = array(); 21 $changes[ManiphestTransaction::TYPE_TITLE] = 22 $this->generateTitle(); 23 $changes[ManiphestTransaction::TYPE_DESCRIPTION] = 24 $this->generateDescription(); 25 $changes[ManiphestTransaction::TYPE_OWNER] = 26 $this->loadOwnerPHID(); 27 $changes[ManiphestTransaction::TYPE_STATUS] = 28 $this->generateTaskStatus(); 29 $changes[ManiphestTransaction::TYPE_PRIORITY] = 30 $this->generateTaskPriority(); 31 $changes[ManiphestTransaction::TYPE_CCS] = 32 $this->getCCPHIDs(); 33 $transactions = array(); 34 foreach ($changes as $type => $value) { 35 $transaction = clone $template; 36 $transaction->setTransactionType($type); 37 $transaction->setNewValue($value); 38 $transactions[] = $transaction; 39 } 40 41 $transactions[] = id(new ManiphestTransaction()) 42 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 43 ->setMetadataValue( 44 'edge:type', 45 PhabricatorProjectObjectHasProjectEdgeType::EDGECONST) 46 ->setNewValue( 47 array( 48 '=' => array_fuse($this->getProjectPHIDs()), 49 )); 50 51 // Apply Transactions 52 $editor = id(new ManiphestTransactionEditor()) 53 ->setActor($author) 54 ->setContentSource($content_source) 55 ->setContinueOnNoEffect(true) 56 ->setContinueOnMissingFields(true) 57 ->applyTransactions($task, $transactions); 58 return $task; 59 } 60 61 public function getCCPHIDs() { 62 $ccs = array(); 63 for ($i = 0; $i < rand(1, 4);$i++) { 64 $ccs[] = $this->loadPhabrictorUserPHID(); 65 } 66 return $ccs; 67 } 68 69 public function getProjectPHIDs() { 70 $projects = array(); 71 for ($i = 0; $i < rand(1, 4);$i++) { 72 $project = $this->loadOneRandom('PhabricatorProject'); 73 if ($project) { 74 $projects[] = $project->getPHID(); 75 } 76 } 77 return $projects; 78 } 79 80 public function loadOwnerPHID() { 81 if (rand(0, 3) == 0) { 82 return null; 83 } else { 84 return $this->loadPhabrictorUserPHID(); 85 } 86 } 87 88 public function generateTitle() { 89 return id(new PhutilLipsumContextFreeGrammar()) 90 ->generate(); 91 } 92 93 public function generateDescription() { 94 return id(new PhutilLipsumContextFreeGrammar()) 95 ->generateSeveral(rand(30, 40)); 96 } 97 98 public function generateTaskPriority() { 99 return array_rand(ManiphestTaskPriority::getTaskPriorityMap()); 100 } 101 102 public function generateTaskSubPriority() { 103 return rand(2 << 16, 2 << 32); 104 } 105 106 public function generateTaskStatus() { 107 $statuses = array_keys(ManiphestTaskStatus::getTaskStatusMap()); 108 // Make sure 4/5th of all generated Tasks are open 109 $random = rand(0, 4); 110 if ($random != 0) { 111 return ManiphestTaskStatus::getDefaultStatus(); 112 } else { 113 return array_rand($statuses); 114 } 115 } 116 117 118 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |