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; }