[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/maniphest/lipsum/ -> PhabricatorManiphestTaskTestDataGenerator.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1