@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Task Generation with Transactions, Auxiliary Fields, and Projects

Summary: Ref T2903

Test Plan: Task Generation is visibly functional with additional changes.

Reviewers: epriestley

Reviewed By: epriestley

CC: AnhNhan, aran, Korvin

Maniphest Tasks: T2903

Differential Revision: https://secure.phabricator.com/D5799

authored by

deedydas and committed by
epriestley
c7be6f4a 0ecc5dec

+70 -8
+70 -8
src/applications/maniphest/lipsum/PhabricatorManiphestTaskTestDataGenerator.php
··· 4 4 extends PhabricatorTestDataGenerator { 5 5 6 6 public function generate() { 7 - return id(new ManiphestTask()) 8 - ->setStatus($this->generateTaskStatus()) 9 - ->setPriority($this->generateTaskPriority()) 7 + $authorPHID = $this->loadAuthorPHID(); 8 + $author = id(new PhabricatorUser()) 9 + ->loadOneWhere('phid = %s', $authorPHID); 10 + $task = id(new ManiphestTask()) 10 11 ->setSubPriority($this->generateTaskSubPriority()) 11 - ->setAuthorPHID($this->loadAuthorPHID()) 12 - ->setTitle($this->generateTitle()) 13 - ->setDescription($this->generateDescription()) 14 - ->setOwnerPHID($this->loadOwnerPHID()) 15 - ->save(); 12 + ->setAuthorPHID($authorPHID) 13 + ->setTitle($this->generateTitle()); 14 + $content_source = PhabricatorContentSource::newForSource( 15 + PhabricatorContentSource::SOURCE_UNKNOWN, 16 + array()); 17 + $template = id(new ManiphestTransaction()) 18 + ->setAuthorPHID($authorPHID) 19 + ->setContentSource($content_source); 20 + // Accumulate Transactions 21 + $changes = array(); 22 + $changes[ManiphestTransactionType::TYPE_TITLE] = 23 + $this->generateTitle(); 24 + $changes[ManiphestTransactionType::TYPE_DESCRIPTION] = 25 + $this->generateDescription(); 26 + $changes[ManiphestTransactionType::TYPE_OWNER] = 27 + $this->loadOwnerPHID(); 28 + $changes[ManiphestTransactionType::TYPE_STATUS] = 29 + $this->generateTaskStatus(); 30 + $changes[ManiphestTransactionType::TYPE_PRIORITY] = 31 + $this->generateTaskPriority(); 32 + $changes[ManiphestTransactionType::TYPE_CCS] = 33 + $this->getCCPHIDs(); 34 + $changes[ManiphestTransactionType::TYPE_PROJECTS] = 35 + $this->getProjectPHIDs(); 36 + $transactions = array(); 37 + foreach ($changes as $type => $value) { 38 + $transaction = clone $template; 39 + $transaction->setTransactionType($type); 40 + $transaction->setNewValue($value); 41 + $transactions[] = $transaction; 42 + } 43 + // Accumulate Auxiliary Transactions 44 + $aux_fields = id(ManiphestTaskExtensions::newExtensions()) 45 + ->loadFields($task, $author); 46 + if ($aux_fields) { 47 + foreach ($aux_fields as $aux_field) { 48 + $transaction = clone $template; 49 + $transaction->setTransactionType( 50 + ManiphestTransactionType::TYPE_AUXILIARY); 51 + $aux_key = $aux_field->getAuxiliaryKey(); 52 + $transaction->setMetadataValue('aux:key', $aux_key); 53 + $transaction->setNewValue($aux_field->getValueForStorage()); 54 + $transactions[] = $transaction; 55 + } 56 + } 57 + // Apply Transactions 58 + $editor = id(new ManiphestTransactionEditor()) 59 + ->setActor($author) 60 + ->applyTransactions($task, $transactions); 61 + return $task->save(); 62 + } 63 + 64 + public function getCCPHIDs() { 65 + $ccs = array(); 66 + for ($i = 0; $i < rand(1, 4);$i++) { 67 + $ccs[] = $this->loadPhabrictorUserPHID(); 68 + } 69 + return $ccs; 70 + } 71 + 72 + public function getProjectPHIDs() { 73 + $projects = array(); 74 + for ($i = 0; $i < rand(1, 4);$i++) { 75 + $projects[] = $this->loadOneRandom("PhabricatorProject")->getPHID(); 76 + } 77 + return $projects; 16 78 } 17 79 18 80 private function loadPhabrictorUserPHID() {