/** * @param Payload $payload * @return boolean */ protected function validateCommitMessages(Payload $payload) { $hasErrors = FALSE; $url = $payload->getPullRequest()->resolveApiUrl(PullRequest::API_URL_COMMITS); $response = $payload->getApi()->get($url); $commits = json_decode($response->getContent(), JSON_OBJECT_AS_ARRAY); foreach ($commits as $commitData) { $commit = new Commit($commitData['commit']); $commit->setUrl($commitData['comments_url']); $commit->setId($commitData['sha']); $commit->setSha1($commitData['sha']); $validationResult = $this->validateCommitMessage($payload, $commit); $hasErrors = TRUE !== $validationResult || TRUE === $hasErrors; } return FALSE === $hasErrors; }
/** * @return void */ public function testStoreCommitValidation() { $commit = new Commit(); $commit->setUrl('fakeurl'); $commit->setId('fakesha1'); $pullRequest = new PullRequest(); $expected = json_encode(array('commit_id' => 'fakesha1', 'body' => 'fakemessage', 'path' => '/a/b/c', 'position' => 123)); $api = $this->getMockBuilder('Milo\\GitHub\\Api')->setMethods(array('post'))->getMock(); $payload = $this->getMockBuilder('NamelessCoder\\Gizzle\\Payload')->setMethods(array('getApi', 'getRepository'))->setConstructorArgs(array('{}', ''))->getMock(); $payload->expects($this->any())->method('getRepository')->willReturn(new Repository()); $payload->expects($this->once())->method('getApi')->willReturn($api); $api->expects($this->once())->method('post')->with($this->anything(), $expected); $payload->storeCommitValidation($pullRequest, $commit, 'fakemessage', '/a/b/c', 123); }