public function testExecute()
 {
     $builder = new SearchBuilder();
     $this->assertEquals(['jql' => null, 'startAt' => null, 'maxResults' => $builder->getLimit(), 'validateQuery' => true, 'fields' => null, 'expand' => null], $builder->execute());
     $builder->setJql('project = test')->setPage(5)->setValidateQuery(false)->setFields(['id', 'key', 'assignee'])->setExpandFields(['assignee']);
     $this->assertEquals(['jql' => 'project = test', 'startAt' => 80, 'maxResults' => $builder->getLimit(), 'validateQuery' => false, 'fields' => ['id', 'key', 'assignee'], 'expand' => ['assignee']], $builder->execute());
 }
Example #2
0
 /**
  * @todo implement getAllIssues method on client
  *
  * {@inheritdoc}
  */
 public function getIssues(array $parameters = [], $page = 1, $perPage = 30)
 {
     $jql = [];
     foreach ($parameters as $key => $value) {
         if (!$value) {
             continue;
         }
         switch ($key) {
             case 'number':
                 $jql[] = sprintf('id=%s', $value);
                 break;
             case 'state':
                 $jql[] = sprintf('status=%s', $value);
                 break;
             case 'title':
                 $jql[] = sprintf('summary~%s', $value);
                 break;
             case 'body':
                 $jql[] = sprintf('description~%s', $value);
                 break;
             case 'user':
                 $jql[] = sprintf('reporter=%s', $value);
                 break;
             case 'labels':
                 $jql[] = sprintf('labels in (%s)', implode(',', $value));
                 break;
             case 'closed_by':
             case 'assignee':
                 $jql[] = sprintf('assignee=%s', $value);
                 break;
             case 'milestone':
                 $jql[] = sprintf('versions in (%s)', $value);
                 break;
             case 'created_at':
                 $nextDay = clone $value;
                 $nextDay->modify('+1 day');
                 $jql[] = sprintf('created>=%s and created<=%s', $value->format('Y-m-d'), $nextDay->format('Y-m-d'));
                 break;
             case 'updated_at':
                 $nextDay = clone $value;
                 $nextDay->modify('+1 day');
                 $jql[] = sprintf('updated>=%s and updated<=%s', $value->format('Y-m-d'), $nextDay->format('Y-m-d'));
                 break;
         }
     }
     $searchBuilder = new SearchBuilder();
     $searchBuilder->setJql(implode(' and ', $jql))->setLimit($perPage)->setPage($page);
     $fetchedIssues = $this->issueClient->search($searchBuilder)->json()['issues'];
     $issues = [];
     foreach ($fetchedIssues as $issue) {
         $issues[] = $this->adaptIssueStructure($issue);
     }
     return $issues;
 }
Example #3
0
 /**
  * Search issues by given parameters
  *
  * @link  https://docs.atlassian.com/jira/REST/latest/#d2e4257
  *
  * @param  SearchBuilder $searchBuilder
  *
  * @return \GuzzleHttp\Message\Response
  */
 public function search(SearchBuilder $searchBuilder)
 {
     return $this->postRequest('search', $searchBuilder->execute());
 }
 public function testSearch()
 {
     $builder = new SearchBuilder();
     $builder->setJql('project = PROJ');
     $jsonFile = __DIR__ . '/../fixtures/issue/search.json';
     $issueClient = $this->getIssueClientMock($this->getJsonResponseMock($jsonFile));
     $searchResults = $issueClient->search($builder)->json();
     $this->assertArrayHasKey('issues', $searchResults);
     $this->assertCount(1, $searchResults['issues']);
     $this->assertArrayHasKey('id', $searchResults['issues'][0]);
     $this->assertEquals(10001, $searchResults['issues'][0]['id']);
 }