From 815d23b36a1dcd85dccf9368ac4b857988faf4ab Mon Sep 17 00:00:00 2001 From: Alexander Eimer Date: Tue, 17 Jan 2017 11:27:14 +0100 Subject: [PATCH] Added ProjectType --- .gitignore | 6 ++ src/Project/ProjectService.php | 63 +++++++++++++++++-- src/Project/ProjectType.php | 25 ++++++++ tests/ProjectTest.php | 111 ++++++++++++++++++++++++--------- 4 files changed, 171 insertions(+), 34 deletions(-) create mode 100644 src/Project/ProjectType.php diff --git a/.gitignore b/.gitignore index 4b7ff29a..9ab40da4 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,9 @@ screen_capture.png bug-description.pdf .env + +# Ignore Vagrant Stuff +.vagrant +Vagrantfile +# Ignore scotch.io box and the folders of them +public/ diff --git a/src/Project/ProjectService.php b/src/Project/ProjectService.php index 772aa193..50bf0572 100644 --- a/src/Project/ProjectService.php +++ b/src/Project/ProjectService.php @@ -2,8 +2,8 @@ namespace JiraRestApi\Project; -use JiraRestApi\Issue\Reporter; use JiraRestApi\Issue\IssueType; +use JiraRestApi\Issue\Reporter; class ProjectService extends \JiraRestApi\JiraClient { @@ -19,7 +19,7 @@ public function getAllProjects() $ret = $this->exec($this->uri, null); $prjs = $this->json_mapper->mapArray( - json_decode($ret, false), new \ArrayObject(), '\JiraRestApi\Project\Project' + json_decode($ret, false), new \ArrayObject(), '\JiraRestApi\Project\Project' ); return $prjs; @@ -36,12 +36,12 @@ public function getAllProjects() */ public function get($projectIdOrKey) { - $ret = $this->exec($this->uri."/$projectIdOrKey", null); + $ret = $this->exec($this->uri . "/$projectIdOrKey", null); - $this->log->addInfo('Result='.$ret); + $this->log->addInfo('Result=' . $ret); $prj = $this->json_mapper->map( - json_decode($ret), new Project() + json_decode($ret), new Project() ); return $prj; @@ -69,7 +69,7 @@ public function getAssignable($projectIdOrKey) public function getStatuses($projectIdOrKey) { - $ret = $this->exec($this->uri."/$projectIdOrKey/statuses", null); + $ret = $this->exec($this->uri . "/$projectIdOrKey/statuses", null); $json = json_decode($ret); $results = array_map(function ($elem) { return $this->json_mapper->map($elem, new IssueType()); @@ -77,4 +77,55 @@ public function getStatuses($projectIdOrKey) return $results; } + + /** + * @return ProjectType[] + */ + public function getProjectTypes() + { + $ret = $this->exec($this->uri . "/type"); + + $this->log->addInfo('Result=' . $ret); + + $json = json_decode($ret); + $results = array_map(function ($elem) { + return $this->json_mapper->map($elem, new ProjectType()); + }, $json); + + return $results; + } + + /** + * @param string|int $key + * @return ProjectType + */ + public function getProjectType($key) + { + $ret = $this->exec($this->uri . "/type/$key"); + + $this->log->addInfo('Result=' . $ret); + + $type = $this->json_mapper->map( + json_decode($ret, false), new ProjectType() + ); + + return $type; + } + + /** + * @param string|int $key + * @return ProjectType + */ + public function getAccessibleProjectType($key) + { + $ret = $this->exec($this->uri . "/type/$key/accessible"); + + $this->log->addInfo('Result=' . $ret); + + $type = $this->json_mapper->map( + json_decode($ret, false), new ProjectType() + ); + + return $type; + } } diff --git a/src/Project/ProjectType.php b/src/Project/ProjectType.php new file mode 100644 index 00000000..def0ee91 --- /dev/null +++ b/src/Project/ProjectType.php @@ -0,0 +1,25 @@ +markTestIncomplete(); - try { - $proj = new ProjectService(); - - $p = $proj->get('TEST'); - - Dumper::dump($p); - foreach ($p->components as $c) { - echo 'COM : '.$c->name."\n"; - } - } catch (HTTPException $e) { - $this->assertTrue(false, $e->getMessage()); - } + $proj = new ProjectService(); + + $p = $proj->get('TEST'); + + $this->assertTrue($p instanceof JiraRestApi\Project\Project); + $this->assertTrue(strlen($p->key) > 0); + $this->assertTrue(!empty($p->id)); + $this->assertTrue(strlen($p->name) > 0); + // $this->assertTrue(strlen($p->projectCategory['name']) > 0); } public function testGetProjectLists() { - //$this->markTestIncomplete(); - try { - $proj = new ProjectService(); - - $prjs = $proj->getAllProjects(); - - foreach ($prjs as $p) { - echo sprintf("Project Key:%s, Id:%s, Name:%s, projectCategory: %s\n", - $p->key, $p->id, $p->name, $p->projectCategory['name'] - ); - } - } catch (HTTPException $e) { - $this->assertTrue(false, $e->getMessage()); + $proj = new ProjectService(); + + $prjs = $proj->getAllProjects(); + + foreach ($prjs as $p) { + $this->assertTrue($p instanceof JiraRestApi\Project\Project); + $this->assertTrue(strlen($p->key) > 0); + $this->assertTrue(!empty($p->id)); + $this->assertTrue(strlen($p->name) > 0); + // $this->assertTrue(strlen($p->projectCategory['name']) > 0); } } - // + + public function testGetProjectTypes() + { + $proj = new ProjectService(); + + $prjtyps = $proj->getProjectTypes(); + + foreach ($prjtyps as $pt) { + $this->assertTrue($pt instanceof JiraRestApi\Project\ProjectType); + $this->assertTrue(strlen($pt->key) > 0); + $this->assertTrue(strlen($pt->formattedKey) > 0); + $this->assertTrue(strlen($pt->descriptionI18nKey) > 0); + $this->assertTrue(strlen($pt->color) > 0); + $this->assertTrue(strlen($pt->icon) > 0); + } + } + + public function testGetProjectType() + { + $proj = new ProjectService(); + + $prjtyp = $proj->getProjectType('software'); + + $this->assertTrue($prjtyp instanceof JiraRestApi\Project\ProjectType); + $this->assertTrue(strlen($prjtyp->key) > 0); + $this->assertTrue(strlen($prjtyp->formattedKey) > 0); + $this->assertTrue(strlen($prjtyp->descriptionI18nKey) > 0); + $this->assertTrue(strlen($prjtyp->color) > 0); + $this->assertTrue(strlen($prjtyp->icon) > 0); + } + + /** + * @expectedException JiraRestApi\JiraException + */ + public function testGetProjectTypeException() + { + $proj = new ProjectService(); + + $prjtyp = $proj->getProjectType('foobar'); + } + + public function testGetProjectAccessible() + { + $proj = new ProjectService(); + + $prjtyp = $proj->getAccessibleProjectType('business'); + + $this->assertTrue($prjtyp instanceof JiraRestApi\Project\ProjectType); + $this->assertTrue(strlen($prjtyp->key) > 0); + $this->assertTrue(strlen($prjtyp->formattedKey) > 0); + $this->assertTrue(strlen($prjtyp->descriptionI18nKey) > 0); + $this->assertTrue(strlen($prjtyp->color) > 0); + $this->assertTrue(strlen($prjtyp->icon) > 0); + } + + /** + * @expectedException JiraRestApi\JiraException + */ + public function testGetProjectAccessibleException() + { + $proj = new ProjectService(); + + $prjtyp = $proj->getAccessibleProjectType('foobar'); + } }