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);
 }
 /**
  * @param GithubCommit $githubCommit
  *
  * @return GithubCommit
  */
 public function calculate(GithubCommit $githubCommit)
 {
     if (0 == count($githubCommit->getCommitStatuses())) {
         $githubCommit->setInternalStatus(InternalStatus::FINISHED_NO_STATUS_CHECKS);
     } elseif ($this->allPassed($githubCommit)) {
         $githubCommit->setInternalStatus(InternalStatus::SUCCESS);
     } elseif ($this->anyErrored($githubCommit)) {
         $githubCommit->setInternalStatus(InternalStatus::ERROR);
     } elseif ($this->anyFailed($githubCommit)) {
         $githubCommit->setInternalStatus(InternalStatus::FAILURE);
     } elseif ($this->allPending($githubCommit)) {
         $githubCommit->setInternalStatus(InternalStatus::PENDING);
     } elseif ($this->isSucceeding($githubCommit)) {
         $githubCommit->setInternalStatus(InternalStatus::SUCCEEDING);
     } else {
         $githubCommit->setInternalStatus(InternalStatus::UNKNOWN);
     }
     return $githubCommit;
 }