public function it_sets_internal_state_to_success_if_all_statuses_passed(GithubCommit $githubCommit, GithubCommitStatus $commitStatus1, GithubCommitStatus $commitStatus2, GithubCommitStatus $commitStatus3, GithubCommitStatus $commitStatus4)
 {
     $commitStatusCollection = [$commitStatus1, $commitStatus2, $commitStatus3, $commitStatus4];
     $commitStatus1->getState()->willReturn(GithubCommitStatusState::PASSED);
     $commitStatus2->getState()->willReturn(GithubCommitStatusState::PASSED);
     $commitStatus3->getState()->willReturn(GithubCommitStatusState::PASSED);
     $commitStatus4->getState()->willReturn(GithubCommitStatusState::PASSED);
     $githubCommit->getCommitStatuses()->willReturn($commitStatusCollection);
     $githubCommit->setInternalStatus(InternalStatus::SUCCESS)->shouldBeCalled();
     $this->calculate($githubCommit)->shouldReturn($githubCommit);
 }
 /**
  * @return array
  */
 public function provideAllVariations()
 {
     $statuses = [GithubCommitStatusState::PENDING, GithubCommitStatusState::FAILED, GithubCommitStatusState::ERROR, GithubCommitStatusState::PASSED];
     $pe = permutations($statuses, 5);
     $returnList = [];
     foreach ($pe as $permutation) {
         $resultSet = new ArrayCollection();
         foreach ($permutation as $value) {
             $result = new GithubCommitStatus();
             $result->setState($value);
             $resultSet->add($result);
         }
         $returnList[] = [$resultSet];
     }
     return $returnList;
 }
 /**
  * @param GithubCommit          $githubCommit
  * @param GithubExternalService $githubExternalService
  *
  * @return GithubCommitStatus
  */
 public function create(GithubCommit $githubCommit, GithubExternalService $githubExternalService)
 {
     $status = new GithubCommitStatus();
     $status->setGithubCommit($githubCommit)->setGithubExternalService($githubExternalService);
     return $status;
 }