diff --git a/lib/Gitlab/Api/Issues.php b/lib/Gitlab/Api/Issues.php index fbed8d9c5..cf06712b7 100644 --- a/lib/Gitlab/Api/Issues.php +++ b/lib/Gitlab/Api/Issues.php @@ -126,4 +126,14 @@ public function removeComment($project_id, $issue_id, $note_id) { return $this->delete($this->getProjectPath($project_id, 'issues/'.$this->encodePath($issue_id).'/notes/'.$this->encodePath($note_id))); } + + /** + * @param int $project_id + * @param int $issue_iid + * @return mixed + */ + public function getTimeStats($project_id, $issue_iid) + { + return $this->get($this->getProjectPath($project_id, 'issues/'.$this->encodePath($issue_iid) .'/time_stats')); + } } diff --git a/test/Gitlab/Tests/Api/IssuesTest.php b/test/Gitlab/Tests/Api/IssuesTest.php index db2424a55..708fcb05a 100644 --- a/test/Gitlab/Tests/Api/IssuesTest.php +++ b/test/Gitlab/Tests/Api/IssuesTest.php @@ -191,4 +191,21 @@ protected function getApiClass() { return 'Gitlab\Api\Issues'; } + + /** + * @test + */ + public function shouldGetIssueTimeStats() + { + $expectedArray = array('time_estimate' => 14400, 'total_time_spent' => 5400, 'human_time_estimate' => '4h', 'human_total_time_spent' => '1h 30m'); + + $api = $this->getApiMock(); + $api->expects($this->once()) + ->method('get') + ->with('projects/1/issues/2/time_stats') + ->will($this->returnValue($expectedArray)) + ; + + $this->assertEquals($expectedArray, $api->getTimeStats(1, 2)); + } }