/** * @test * @dataProvider provideValidateEnum */ public function validates_enum_with_specs($domain, $type = null, $value = null, $exceptionMessage = null) { if (null !== $exceptionMessage) { $this->setExpectedException('InvalidArgumentException', $exceptionMessage); } GitRepoHelper::validateEnum($domain, $type, $value); }
/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $tracker = $this->getIssueTracker(); $params = GitRepoHelper::validateEnums($input, 'issue', ['state', 'sort', 'direction']); foreach (['creator', 'assignee', 'mentioned', 'milestone'] as $option) { $params[$option] = $input->getOption($option); } if ($label = $input->getOption('label')) { $params['labels'] = implode(',', $label); } if ($since = $input->getOption('since')) { $timeStamp = strtotime($since); if (false === $timeStamp) { throw new \InvalidArgumentException($since . ' is not a valid date'); } $params['since'] = date('c', $timeStamp); } $issues = $tracker->getIssues($params); // post filter foreach ($issues as $i => &$issue) { $isPr = $issue['pull_request']; $issue['_type'] = $isPr ? 'pr' : 'issue'; if ($type = $input->getOption('type')) { GitRepoHelper::validateEnum('issue', 'type', $type); if ('pr' === $type && false === $isPr || 'issue' === $type && true === $isPr) { unset($issues[$i]); } } } unset($issue); $styleHelper = $this->getHelper('gush_style'); $styleHelper->title(sprintf('Issues on %s/%s', $input->getOption('issue-org'), $input->getOption('issue-project'))); $table = $this->getHelper('table'); $table->setHeaders(['#', 'State', 'PR?', 'Title', 'User', 'Assignee', 'Milestone', 'Labels', 'Created', 'Link']); $table->formatRows($issues, function ($issue) { return [$issue['number'], $issue['state'], $issue['_type'] === 'pr' ? 'PR' : '', $this->getHelper('text')->truncate($issue['title'], 40), $issue['user'], $issue['assignee'], $this->getHelper('text')->truncate($issue['milestone'], 15), $this->getHelper('text')->truncate(implode(',', $issue['labels']), 30), null !== $issue['created_at'] ? $issue['created_at']->format('Y-m-d H:i') : '', $issue['url']]; }); $table->setFooter(sprintf('<info>%s issues</info>', count($issues))); $table->render($output, $table); return self::COMMAND_SUCCESS; }