From ee5633377c919272ce0dc603616fdf6bf13e6ed6 Mon Sep 17 00:00:00 2001 From: KwangSeob Jeong Date: Wed, 1 Jun 2022 22:23:22 +0900 Subject: [PATCH] drop PHP7, change manu function name postfix AsString, AsArray --- .env.example | 13 +- README.md | 319 +++++++++++++++++----------------- composer.json | 16 +- phpunit.xml | 24 ++- src/Issue/IssueField.php | 183 +++++++++---------- src/Issue/Visibility.php | 12 +- src/Issue/VisibilityTrait.php | 36 ++-- src/Project/Project.php | 20 ++- tests/IssueTest.php | 220 +++++++++++++---------- 9 files changed, 441 insertions(+), 402 deletions(-) diff --git a/.env.example b/.env.example index 3c74dd6c..4469dc76 100644 --- a/.env.example +++ b/.env.example @@ -7,6 +7,15 @@ JIRA_LOG_LEVEL="WARNING" JIRA_REST_API_V3=false -## if TOKEN_BASED_AUTH set to true, ignore JIRA_USER and JIRA_PASS. +### if TOKEN_BASED_AUTH set to true, ignore JIRA_USER and JIRA_PASS. TOKEN_BASED_AUTH=true -PERSONAL_ACCESS_TOKEN="your-access-token-here" \ No newline at end of file +PERSONAL_ACCESS_TOKEN="your-access-token-here" + +### to enable session cookie authorization +# COOKIE_AUTH_ENABLED=true +# COOKIE_FILE=storage/jira-cookie.txt +### if you are behind a proxy, add proxy settings +# PROXY_SERVER="your-proxy-server" +# PROXY_PORT="proxy-port" +# PROXY_USER="proxy-username" +# PROXY_PASSWORD="proxy-password" \ No newline at end of file diff --git a/README.md b/README.md index a69be2e5..05c85a5c 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ # Requirements -- PHP >= 7.1 +- PHP >= 8.0 - [php JsonMapper](https://github.com/netresearch/jsonmapper) - [phpdotenv](https://github.com/vlucas/phpdotenv) @@ -32,8 +32,8 @@ or add the following to your composer.json file. ```json { - "require": { - "lesstif/php-jira-rest-client": "^3.0" + 'require': { + 'lesstif/php-jira-rest-client': '^4.0' } } ``` @@ -62,20 +62,20 @@ you can choose loads environment variables either 'dotenv' or 'array'. copy .env.example file to .env on your project root. ```sh -JIRA_HOST="https://your-jira.host.com" -JIRA_USER="jira-username" -JIRA_PASS="jira-password-OR-api-token" +JIRA_HOST='https://your-jira.host.com' +JIRA_USER='jira-username' +JIRA_PASS='jira-password-OR-api-token' # if TOKEN_BASED_AUTH set to true, ignore JIRA_USER and JIRA_PASS. TOKEN_BASED_AUTH=true -PERSONAL_ACCESS_TOKEN="your-access-token-here" +PERSONAL_ACCESS_TOKEN='your-access-token-here' # to enable session cookie authorization # COOKIE_AUTH_ENABLED=true # COOKIE_FILE=storage/jira-cookie.txt # if you are behind a proxy, add proxy settings -PROXY_SERVER="your-proxy-server" -PROXY_PORT="proxy-port" -PROXY_USER="proxy-username" -PROXY_PASSWORD="proxy-password" +PROXY_SERVER='your-proxy-server' +PROXY_PORT='proxy-port' +PROXY_USER='proxy-username' +PROXY_PASSWORD='proxy-password' JIRA_REST_API_V3=false ``` @@ -112,10 +112,10 @@ $iss = new IssueService(new ArrayConfiguration( 'cookieAuthEnabled' => true, 'cookieFile' => storage_path('jira-cookie.txt'), // if you are behind a proxy, add proxy settings - "proxyServer" => 'your-proxy-server', - "proxyPort" => 'proxy-port', - "proxyUser" => 'proxy-username', - "proxyPassword" => 'proxy-password', + 'proxyServer' => 'your-proxy-server', + 'proxyPort' => 'proxy-port', + 'proxyUser' => 'proxy-username', + 'proxyPassword' => 'proxy-password', ) )); ``` @@ -243,7 +243,7 @@ try { ->setProjectTypeKey('business') ->setProjectTemplateKey('com.atlassian.jira-core-project-templates:jira-core-project-management') ->setDescription('Example Project description') - ->setLead('lesstif') + ->setLeadName('lesstif') ->setUrl('http://example.com') ->setAssigneeType('PROJECT_LEAD') ->setAvatarId(10130) @@ -257,12 +257,12 @@ try { $pj = $proj->createProject($p); - // "http://example.com/rest/api/2/project/10042" + // 'http://example.com/rest/api/2/project/10042' var_dump($pj->self); // 10042 var_dump($pj->id); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -271,7 +271,7 @@ try { Update a project. Only non null values sent in JSON will be updated in the project. -Values available for the assigneeType field are: "PROJECT_LEAD" and "UNASSIGNED". +Values available for the assigneeType field are: 'PROJECT_LEAD' and 'UNASSIGNED'. [See Jira API reference](https://docs.atlassian.com/software/jira/docs/api/REST/latest/#api/2/project-updateProject) @@ -301,7 +301,7 @@ try { var_dump($pj); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -325,7 +325,7 @@ try { var_dump($pj); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -347,7 +347,7 @@ try { var_dump($p); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -368,12 +368,12 @@ try { $prjs = $proj->getAllProjects(); foreach ($prjs as $p) { - echo sprintf("Project Key:%s, Id:%s, Name:%s, projectCategory: %s\n", + echo sprintf('Project Key:%s, Id:%s, Name:%s, projectCategory: %s\n', $p->key, $p->id, $p->name, $p->projectCategory['name'] ); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -399,7 +399,7 @@ try { var_export($proj->getProjectComponents($p->id)); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -432,7 +432,7 @@ try { var_dump($pt); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -460,7 +460,7 @@ try { var_dump($v); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -493,7 +493,7 @@ try { var_dump($v); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -538,10 +538,10 @@ use JiraRestApi\JiraException; try { $field = new Field(); - $field->setName("New custom field") - ->setDescription("Custom field for picking groups") - ->setType("com.atlassian.jira.plugin.system.customfieldtypes:grouppicker") - ->setSearcherKey("com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher"); + $field->setName('New custom field') + ->setDescription('Custom field for picking groups') + ->setType('com.atlassian.jira.plugin.system.customfieldtypes:grouppicker') + ->setSearcherKey('com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher'); $fieldService = new FieldService(); @@ -591,7 +591,7 @@ try { var_dump($issue->fields); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -612,17 +612,22 @@ use JiraRestApi\JiraException; try { $issueField = new IssueField(); - $issueField->setProjectKey("TEST") - ->setSummary("something's wrong") - ->setAssigneeName("lesstif") - ->setPriorityName("Critical") - ->setIssueType("Bug") - ->setDescription("Full description for issue") - ->addVersion(["1.0.1", "1.0.3"]) - ->addComponents(['Component-1', 'Component-2']) + $issueField->setProjectKey('TEST') + ->setSummary('something's wrong') + ->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') + ->setDescription('Full description for issue') + ->addVersionAsString('1.0.1') + ->addVersionAsArray(['1.0.2', '1.0.3']) + ->addComponentsAsArray(['Component-1', 'Component-2']) // set issue security if you need. ->setSecurityId(10001 /* security scheme id */) - ->setDueDate('2019-06-19') + ->setDueDateAsString('2023-06-19') + // or you can use DateTimeInterface + //->setDueDateAsDateTime( + // (new DateTime('NOW'))->add(DateInterval::createFromDateString('1 month 5 day')) + // ) ; $issueService = new IssueService(); @@ -632,7 +637,7 @@ try { //If success, Returns a link to the created issue. var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -642,14 +647,14 @@ If you want to set custom field, you can call the *addCustomField* function with try { $issueField = new IssueField(); - $issueField->setProjectKey("TEST") - ->setSummary("something's wrong") - ->setAssigneeName("lesstif") - ->setPriorityName("Critical") - ->setIssueType("Bug") - ->setDescription("Full description for issue") - ->addVersion("1.0.1") - ->addVersion("1.0.3") + $issueField->setProjectKey('TEST') + ->setSummary('something's wrong') + ->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') + ->setDescription('Full description for issue') + ->addVersion('1.0.1') + ->addVersion('1.0.3') ->addCustomField('customfield_10100', 'text area body text') // String type custom field ->addCustomField('customfield_10200', ['value' => 'Linux']) // Select List (single choice) ->addCustomField('customfield_10408', [ @@ -664,7 +669,7 @@ try { //If success, Returns a link to the created issue. var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -685,19 +690,19 @@ use JiraRestApi\JiraException; try { $issueFieldOne = new IssueField(); - $issueFieldOne->setProjectKey("TEST") - ->setSummary("something's wrong") - ->setPriorityName("Critical") - ->setIssueType("Bug") - ->setDescription("Full description for issue"); + $issueFieldOne->setProjectKey('TEST') + ->setSummary('something's wrong') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') + ->setDescription('Full description for issue'); $issueFieldTwo = new IssueField(); - $issueFieldTwo->setProjectKey("TEST") - ->setSummary("something else is wrong") - ->setPriorityName("Critical") - ->setIssueType("Bug") - ->setDescription("Full description for second issue"); + $issueFieldTwo->setProjectKey('TEST') + ->setSummary('something else is wrong') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') + ->setDescription('Full description for second issue'); $issueService = new IssueService(); @@ -706,7 +711,7 @@ try { //If success, returns an array of the created issues var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -717,7 +722,7 @@ try { Creating a sub-task is similar to creating a regular issue, with two important method calls: ```php -->setIssueType('Sub-task') +->setIssueTypeAsString('Sub-task') ->setParentKeyOrId($issueKeyOrId) ``` @@ -734,14 +739,14 @@ use JiraRestApi\JiraException; try { $issueField = new IssueField(); - $issueField->setProjectKey("TEST") - ->setSummary("something's wrong") - ->setAssigneeName("lesstif") - ->setPriorityName("Critical") - ->setDescription("Full description for issue") - ->addVersion("1.0.1") - ->addVersion("1.0.3") - ->setIssueType("Sub-task") //issue type must be Sub-task + $issueField->setProjectKey('TEST') + ->setSummary('something's wrong') + ->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Critical') + ->setDescription('Full description for issue') + ->addVersion('1.0.1') + ->addVersion('1.0.3') + ->setIssueTypeAsString('Sub-task') //issue type must be Sub-task ->setParentKeyOrId('TEST-143') //Issue Key ; @@ -752,7 +757,7 @@ try { //If success, Returns a link to the created sub task. var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -781,17 +786,17 @@ Full description for issue - order list 3 DESC; - $issueField->setProjectKey("TEST") - ->setSummary("something's wrong") - ->setAssigneeAccountId("user-account-id-here") - ->setPriorityName("Critical") - ->setIssueType("Bug") + $issueField->setProjectKey('TEST') + ->setSummary('something's wrong') + ->setAssigneeAccountId('user-account-id-here') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') ->addDescriptionHeading(3, 'level 3 heading here') ->addDescriptionParagraph($paraDesc) - ->addVersion(["1.0.1", "1.0.3"]) + ->addVersion(['1.0.1', '1.0.3']) ->addComponents(['Component-1', 'Component-2']) // set issue security if you need. - ->setDueDate('2019-06-19') + ->setDueDateAsString('2019-06-19') ; $issueService = new IssueService(); @@ -801,7 +806,7 @@ DESC; //If success, Returns a link to the created issue. var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -811,14 +816,14 @@ If you want to set custom field, you can call the *addCustomField* function with try { $issueField = new IssueField(); - $issueField->setProjectKey("TEST") - ->setSummary("something's wrong") - ->setAssigneeName("lesstif") - ->setPriorityName("Critical") - ->setIssueType("Bug") - ->setDescription("Full description for issue") - ->addVersion("1.0.1") - ->addVersion("1.0.3") + $issueField->setProjectKey('TEST') + ->setSummary('something's wrong') + ->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') + ->setDescription('Full description for issue') + ->addVersion('1.0.1') + ->addVersion('1.0.3') ->addCustomField('customfield_10100', 'text area body text') // String type custom field ->addCustomField('customfield_10200', ['value' => 'Linux']) // Select List (single choice) ->addCustomField('customfield_10408', [ @@ -833,7 +838,7 @@ try { //If success, Returns a link to the created issue. var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -850,7 +855,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueService = new IssueService(); @@ -862,7 +867,7 @@ try { print_r($ret); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "Attach Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'Attach Failed : ' . $e->getMessage()); } ``` @@ -879,19 +884,19 @@ use JiraRestApi\Issue\IssueService; use JiraRestApi\Issue\IssueField; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueField = new IssueField(true); - $issueField->setAssigneeName("admin") - ->setPriorityName("Blocker") - ->setIssueType("Task") - ->addLabel("test-label-first") - ->addLabel("test-label-second") - ->addVersion("1.0.1") - ->addVersion("1.0.2") - ->setDescription("This is a shorthand for a set operation on the summary field") + $issueField->setAssigneeNameAsString('admin') + ->setPriorityNameAsString('Blocker') + ->setIssueTypeAsString('Task') + ->addLabel('test-label-first') + ->addLabel('test-label-second') + ->addVersion('1.0.1') + ->addVersion('1.0.2') + ->setDescription('This is a shorthand for a set operation on the summary field') ; // optionally set some query params @@ -906,7 +911,7 @@ try { var_dump($ret); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "update Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'update Failed : ' . $e->getMessage()); } ``` @@ -996,7 +1001,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueService = new IssueService(); @@ -1009,7 +1014,7 @@ try { var_dump($ret); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "Change Assignee Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'Change Assignee Failed : ' . $e->getMessage()); } ``` @@ -1022,7 +1027,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueService = new IssueService(); @@ -1033,7 +1038,7 @@ try { var_dump($ret); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "Change Assignee Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'Change Assignee Failed : ' . $e->getMessage()); } ``` @@ -1048,7 +1053,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueService = new IssueService(); @@ -1059,7 +1064,7 @@ try { var_dump($ret); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "Remove Issue Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'Remove Issue Failed : ' . $e->getMessage()); } ``` @@ -1075,7 +1080,7 @@ use JiraRestApi\Issue\IssueService; use JiraRestApi\Issue\Comment; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $comment = new Comment(); @@ -1097,7 +1102,7 @@ COMMENT; $ret = $issueService->addComment($issueKey, $comment); print_r($ret); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "add Comment Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'add Comment Failed : ' . $e->getMessage()); } ``` @@ -1113,7 +1118,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueService = new IssueService(); @@ -1142,7 +1147,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $issueService = new IssueService(); @@ -1174,7 +1179,7 @@ require 'vendor/autoload.php'; use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $commentId = 12345; @@ -1201,7 +1206,7 @@ use JiraRestApi\Issue\IssueService; use JiraRestApi\JiraException; use JiraRestApi\Issue\Comment; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $commentId = 12345; @@ -1237,7 +1242,7 @@ use JiraRestApi\Issue\IssueService; use JiraRestApi\Issue\Transition; use JiraRestApi\JiraException; -$issueKey = "TEST-879"; +$issueKey = 'TEST-879'; try { $transition = new Transition(); @@ -1248,7 +1253,7 @@ try { $issueService->transition($issueKey, $transition); } catch (JiraRestApi\JiraException $e) { - $this->assertTrue(FALSE, "add Comment Failed : " . $e->getMessage()); + $this->assertTrue(FALSE, 'add Comment Failed : ' . $e->getMessage()); } ``` @@ -1303,7 +1308,7 @@ try { var_dump($ret); } catch (JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } // Searches for epics and subtasks. If the issue is not an epic, the search returns all subtasks for the issue. @@ -1316,7 +1321,7 @@ try { var_dump($ret); } catch (JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1348,7 +1353,7 @@ try { // do something with fetched data foreach ($ret->issues as $issue) { - print (sprintf("%s %s \n", $issue->key, $issue->fields->summary)); + print (sprintf('%s %s \n', $issue->key, $issue->fields->summary)); } // fetch remained data @@ -1357,10 +1362,10 @@ try { for ($startAt = 1; $startAt < $page; $startAt++) { $ret = $issueService->search($jql, $startAt * $maxResult, $maxResult); - print ("\nPaging $startAt\n"); - print ("-------------------\n"); + print ('\nPaging $startAt\n'); + print ('-------------------\n'); foreach ($ret->issues as $issue) { - print (sprintf("%s %s \n", $issue->key, $issue->fields->summary)); + print (sprintf('%s %s \n', $issue->key, $issue->fields->summary)); } } } catch (JiraRestApi\JiraException $e) { @@ -1527,7 +1532,7 @@ try { $workLog = new Worklog(); $workLog->setComment('I did some work here.') - ->setStarted("2016-05-28 12:35:54") + ->setStarted('2016-05-28 12:35:54') ->setTimeSpent('1d 2h 3m'); $issueService = new IssueService(); @@ -1611,7 +1616,7 @@ try { $workLog = new Worklog(); $workLog->setComment('I did edit previous worklog here.') - ->setStarted("2016-05-29 13:15:34") + ->setStarted('2016-05-29 13:15:34') ->setTimeSpent('3d 4h 5m'); $issueService = new IssueService(); @@ -1771,7 +1776,7 @@ try { $ret = $ils->addIssueLink($il); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1795,7 +1800,7 @@ try { var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1826,7 +1831,7 @@ try { var_dump($user); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1851,7 +1856,7 @@ try { var_dump($user); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1883,7 +1888,7 @@ try { // get the user info. $users = $us->findUsers($paramArray); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1915,7 +1920,7 @@ try { $users = $us->findAssignableUsers($paramArray); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1944,7 +1949,7 @@ try { $users = $us->findUsersByQuery($paramArray); var_dump($users); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -1969,7 +1974,7 @@ try { $users = $us->deleteUser($paramArray); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2005,7 +2010,7 @@ try { var_dump($updatedUser); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2034,7 +2039,7 @@ try { var_dump($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2069,7 +2074,7 @@ try { print_r($user); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2099,7 +2104,7 @@ try { print_r($ret); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2126,7 +2131,7 @@ try { $gs->removeUserFromGroup($groupName, $userName); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2149,7 +2154,7 @@ try { var_dump($p); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2171,7 +2176,7 @@ try { var_dump($p); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2194,7 +2199,7 @@ try { var_dump($att); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2211,14 +2216,14 @@ use JiraRestApi\JiraException; try { $attachmentId = 12345; - $outDir = "attachment_dir"; + $outDir = 'attachment_dir'; $atts = new AttachmentService(); $att = $atts->get($attachmentId, $outDir, $overwrite = true); var_dump($att); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2241,7 +2246,7 @@ try { $atts->remove($attachmentId); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2276,7 +2281,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2311,7 +2316,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2338,7 +2343,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2365,7 +2370,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2392,7 +2397,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2422,7 +2427,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2452,7 +2457,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2479,7 +2484,7 @@ try { var_dump($res); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2500,7 +2505,7 @@ try { var_dump($board); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2520,7 +2525,7 @@ try { var_dump($board); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2546,7 +2551,7 @@ try { var_dump($issue); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2569,7 +2574,7 @@ try { var_dump($epic); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2588,7 +2593,7 @@ try { var_dump($epic); } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` @@ -2612,7 +2617,7 @@ try { var_dump($issue); } } catch (JiraRestApi\JiraException $e) { - print("Error Occured! " . $e->getMessage()); + print('Error Occured! ' . $e->getMessage()); } ``` diff --git a/composer.json b/composer.json index b5772938..8567bd03 100644 --- a/composer.json +++ b/composer.json @@ -4,18 +4,18 @@ "type": "library", "keywords": ["jira", "rest", "jira-php", "jira-rest"], "require": { - "php": "^7.1|^8.0", + "php": "^8.0", "ext-curl": "*", "ext-json": "*", - "netresearch/jsonmapper": "^2.0|^3.0|^4.0", - "monolog/monolog": "~1.12|^2.0", - "vlucas/phpdotenv": "^3.0|^4.0|^5.0" + "netresearch/jsonmapper": "^3.0|^4.0|^5.0", + "monolog/monolog": "^2.0|^3.0", + "vlucas/phpdotenv": "^5.0|^6.0" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0", - "mockery/mockery": "^0.9.4", - "symfony/var-dumper": "~2.8|~3.0", - "phpstan/phpstan": "^0.12.23" + "phpunit/phpunit": "^9.0|^10.0", + "mockery/mockery": "^1.0|^2.0", + "symfony/var-dumper": "^5.0|^6.0|^7.0", + "phpstan/phpstan": "^1.0|^2.0" }, "license": "Apache-2.0", "authors": [ diff --git a/phpunit.xml b/phpunit.xml index 1bd82939..efe0d6ff 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,15 +1,13 @@ - - - - - tests/ - - - - - - src/ - - + + + + src/ + + + + + tests/ + + diff --git a/src/Issue/IssueField.php b/src/Issue/IssueField.php index bdb58fde..a8ee62c5 100644 --- a/src/Issue/IssueField.php +++ b/src/Issue/IssueField.php @@ -2,52 +2,41 @@ namespace JiraRestApi\Issue; +use DateTimeInterface; use JiraRestApi\ClassSerialize; +use JiraRestApi\Project\Project; class IssueField implements \JsonSerializable { use ClassSerialize; - /** @var string */ - public $summary; + public string $summary; - /** @var array */ - public $progress; + public array $progress; - /** @var \JiraRestApi\Issue\TimeTracking */ - public $timeTracking; + public ?TimeTracking $timeTracking = null; - /** @var \JiraRestApi\Issue\IssueType */ - public $issuetype; + public ?IssueType $issuetype; - /** @var \JiraRestApi\Issue\Reporter|null */ - public $reporter; + public ?Reporter $reporter = null; - /** @var \DateTimeInterface */ - public $created; + public ?DateTimeInterface $created; - /** @var \DateTimeInterface */ - public $updated; + public ?DateTimeInterface $updated = null; - /** @var string|null */ - public $description; + public string $description; - /** @var \JiraRestApi\Issue\Priority|null */ - public $priority; + public ?Priority $priority = null; - /** @var \JiraRestApi\Issue\IssueStatus */ - public $status; + public ?IssueStatus $status = null; - /** @var array */ - public $labels; + public array $labels; - /** @var \JiraRestApi\Project\Project */ - public $project; + public Project $project; - /** @var string|null */ - public $environment; + public ?string $environment; - /** @var \JiraRestApi\Issue\Component[] */ + /* @var \JiraRestApi\Issue\Component[] */ public $components; /** @var \JiraRestApi\Issue\Comments */ @@ -71,8 +60,7 @@ class IssueField implements \JsonSerializable /** @var object|null */ public $worklog; - /** @var \JiraRestApi\Issue\Reporter|null */ - public $assignee; + public ?Reporter $assignee = null; /** @var \JiraRestApi\Issue\Version[] */ public $versions; @@ -83,26 +71,23 @@ class IssueField implements \JsonSerializable /** @var string|null */ public $aggregatetimespent; - /** @var string|null */ - public $timeestimate; + public ?string $timeestimate; - /** @var string|null */ - public $aggregatetimeoriginalestimate; + public ?string $aggregatetimeoriginalestimate; - /** @var string|null */ - public $resolutiondate; + public ?string $resolutiondate; - /** @var \DateTimeInterface|null */ - public $duedate; + public ?DateTimeInterface $duedate = null; - /** @var array */ - public $issuelinks; + private string $duedateString; + + public array $issuelinks; /** @var \JiraRestApi\Issue\Issue[] */ public $subtasks; /** @var int */ - public $workratio; + public int $workratio; /** @var object|null */ public $aggregatetimeestimate; @@ -127,7 +112,7 @@ class IssueField implements \JsonSerializable public function __construct($updateIssue = false) { - if ($updateIssue != true) { + if ($updateIssue !== true) { $this->project = new \JiraRestApi\Project\Project(); $this->assignee = new Reporter(); @@ -166,6 +151,12 @@ public function jsonSerialize() } } + // replace duedate field + if (!empty($this->duedateString)) { + $vars['duedate'] = $this->duedateString; + unset($vars['duedateString']); + } + return $vars; } @@ -253,11 +244,10 @@ public function setReporterAccountId($accountId) * * @param string $name * - * @return $this */ - public function setAssigneeName($name) + public function setAssigneeNameAsString(string $name) : static { - if (is_null($this->assignee)) { + if ($this->assignee === null) { $this->assignee = new Reporter(); } @@ -273,7 +263,7 @@ public function setAssigneeName($name) * * @return $this */ - public function setAssigneeAccountId($accountId) + public function setAssigneeAccountId(string $accountId) { if (is_null($this->assignee)) { $this->assignee = new Reporter(); @@ -295,9 +285,9 @@ public function setAssigneeAccountId($accountId) * * @return $this */ - public function setPriorityName($name) + public function setPriorityNameAsString(string $name) { - if (is_null($this->priority)) { + if ($this->priority === null) { $this->priority = new Priority(); } @@ -334,18 +324,25 @@ public function setDescription($description) * * @return $this */ - public function addVersion($version) + public function addVersionAsString(string $version) : static { if (is_null($this->versions)) { $this->versions = []; } - if (is_string($version)) { - array_push($this->versions, new Version($version)); - } elseif (is_array($version)) { - foreach ($version as $v) { - array_push($this->versions, new Version($v)); - } + array_push($this->versions, new Version($version)); + + return $this; + } + + public function addVersionAsArray(array $version) : static + { + if (is_null($this->versions)) { + $this->versions = []; + } + + foreach ($version as $v) { + array_push($this->versions, new Version($v)); } return $this; @@ -354,17 +351,10 @@ public function addVersion($version) /** * add issue label. * - * @param string $label - * - * @return $this */ - public function addLabel($label) + public function addLabelAsString(string $label) : static { - if (is_null($this->labels)) { - $this->labels = []; - } - - array_push($this->labels, $label); + $this->labels[] = $label; return $this; } @@ -372,26 +362,26 @@ public function addLabel($label) /** * set issue type. * - * @param IssueType $issueType mixed IssueType or string + * @param string $issueTypeName IssueType as string(for example,Bug, Task, etc..) * - * @return $this */ - public function setIssueType($issueType) + public function setIssueTypeAsString(string $issueTypeName) : static { - if (is_string($issueType)) { - if (is_null($this->issuetype)) { - $this->issuetype = new IssueType(); - } + $this->issuetype = new IssueType(); - $this->issuetype->name = $issueType; - } else { - $this->issuetype = $issueType; - } + $this->issuetype->name = $issueTypeName; return $this; } - public function getIssueType() + public function setIssueType(IssueType $issueType) : static + { + $this->issuetype = $issueType; + + return $this; + } + + public function getIssueType() : IssueType { return $this->issuetype; } @@ -420,23 +410,19 @@ public function setParent(Issue $parent) /** * add issue component. * - * @param string|array $component mixed string or array - * - * @return $this */ - public function addComponents($component) + public function addComponentsAsArray(array $component) :static { - if (is_null($this->components)) { - $this->components = []; + foreach ($component as $c) { + $this->components[] = new Component($c); } + \JiraRestApi\Dumper::dd($this->components); + return $this; + } - if (is_string($component)) { - array_push($this->components, new Component($component)); - } elseif (is_array($component)) { - foreach ($component as $c) { - array_push($this->components, new Component($c)); - } - } + public function addComponentAsString(string $component) :static + { + $this->components[] = new Component($component); return $this; } @@ -462,20 +448,17 @@ public function setSecurityId($id) /** * set issue's due date. * - * @param \DateTimeInterface|null $duedate due date string or DateTimeInterface object - * @param string $format datetime string format. - * - * @return $this */ - public function setDueDate($duedate, $format = 'Y-m-d') + public function setDueDateAsString(string $duedate) :static { - if (is_string($duedate)) { - $this->duedate = $duedate; - } elseif ($duedate instanceof \DateTimeInterface) { - $this->duedate = $duedate->format($format); - } else { - $this->duedate = null; - } + $this->duedateString = $duedate; + + return $this; + } + + public function setDueDateAsDateTime(DateTimeInterface $duedate, $format = 'Y-m-d') :static + { + $this->duedateString = $duedate->format($format); return $this; } diff --git a/src/Issue/Visibility.php b/src/Issue/Visibility.php index 398165b2..34e2dd07 100644 --- a/src/Issue/Visibility.php +++ b/src/Issue/Visibility.php @@ -4,25 +4,25 @@ class Visibility implements \JsonSerializable { - private $type; - private $value; + private string $type; + private string $value; - public function setType($type) + public function setType(string $type) { $this->type = $type; } - public function setValue($value) + public function setValue(string $value) { $this->value = $value; } - public function getType() + public function getType() :string { return $this->type; } - public function getValue() + public function getValue() :string { return $this->value; } diff --git a/src/Issue/VisibilityTrait.php b/src/Issue/VisibilityTrait.php index 07a6a4b6..0d3b59e9 100644 --- a/src/Issue/VisibilityTrait.php +++ b/src/Issue/VisibilityTrait.php @@ -4,28 +4,34 @@ trait VisibilityTrait { - /** - * @param Visibility $type - * @param mixed|null $value - * - * @return $this - */ - public function setVisibility($type, $value = null) + public function setVisibility(Visibility $type) :static + { + $this->visibility = $type; + + return $this; + } + + public function setVisibilityAsArray(array $array) :static { if (is_null($this->visibility)) { $this->visibility = new Visibility(); } - if (is_array($type)) { - $this->visibility->setType($type['type']); - $this->visibility->setValue($type['value']); - } elseif ($type instanceof Visibility) { - $this->visibility = $type; - } else { // @phpstan-ignore-line We cannot fix phpdoc to make this "reachable" because of JsonMapper - $this->visibility->setType($type); - $this->visibility->setValue($value); + $this->visibility->setType($array['type']); + $this->visibility->setValue($array['value']); + + return $this; + } + + public function setVisibilityAsString(string $type, string $value) :static + { + if (is_null($this->visibility)) { + $this->visibility = new Visibility(); } + $this->visibility->setType($type); + $this->visibility->setValue($value); + return $this; } } diff --git a/src/Project/Project.php b/src/Project/Project.php index bf9628ee..f503c87a 100644 --- a/src/Project/Project.php +++ b/src/Project/Project.php @@ -59,14 +59,16 @@ class Project implements \JsonSerializable public $projectCategory; /** @var string|null */ - public $description; + public ?string $description; /** * Project leader info. * * @var array */ - public $lead; + public array $lead; + + private string $leadName; /** * The account ID of the project lead. @@ -125,9 +127,15 @@ class Project implements \JsonSerializable #[\ReturnTypeWillChange] public function jsonSerialize() { - return array_filter(get_object_vars($this), function ($var) { + $params = array_filter(get_object_vars($this), function ($var) { return !is_null($var); }); + if (! empty($this->leadName)) { + $params['lead'] = $this->leadName; + unset($params['leadName']); + } + + return $params; } /** @@ -203,13 +211,13 @@ public function setDescription($description) } /** - * @param array $lead + * @param string $leadName * * @return Project */ - public function setLead($lead) + public function setLeadName(string $leadName): static { - $this->lead = $lead; + $this->leadName = $leadName; return $this; } diff --git a/tests/IssueTest.php b/tests/IssueTest.php index 901541dc..fed6be3f 100644 --- a/tests/IssueTest.php +++ b/tests/IssueTest.php @@ -4,6 +4,7 @@ use DateInterval; use DateTime; +use Exception; use PHPUnit\Framework\TestCase; use JiraRestApi\Dumper; use JiraRestApi\Issue\Comment; @@ -14,23 +15,31 @@ class IssueTest extends TestCase { + /** + * @test + * @return void + */ public function testIssue() { $this->markTestIncomplete(); try { $issueService = new IssueService(); - $issue = $issueService->get('TEST-867'); + $issue = $issueService->get('TEST-702'); file_put_contents('jira-issue.json', json_encode($issue, JSON_PRETTY_PRINT)); print_r($issue->fields->versions[0]); - } catch (HTTPException $e) { - $this->assertTrue(false, $e->getMessage()); + } catch (Exception $e) { + $this->fail($e->getMessage()); } } - public function testCreateIssue() + /** + * @test + * @return string + */ + public function create_issue() : string { try { $issueField = new IssueField(); @@ -39,13 +48,17 @@ public function testCreateIssue() $issueField->setProjectKey('TEST') ->setSummary("something's wrong") - ->setAssigneeName('lesstif') - ->setPriorityName('Critical') - ->setIssueType('Bug') + ->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Critical') + ->setIssueTypeAsString('Bug') ->setDescription('Full description for issue') - ->addVersion(['1.0.1', '1.0.3']) - ->addComponents(['Component-1', 'Component-2']) - ->setDueDate($due) + ->addVersionAsArray(['1.0.1', '1.0.3']) + //->addComponentsAsArray(['Component-1', 'Component-2']) + ->addComponentAsString('Component-1') + ->setDueDateAsDateTime( + (new DateTime('NOW'))->add(DateInterval::createFromDateString('1 month 5 day')) + ) + //->setDueDateAsString('2022-10-03') ; $issueService = new IssueService(); @@ -53,23 +66,23 @@ public function testCreateIssue() $ret = $issueService->create($issueField); //If success, Returns a link to the created issue. - //print_r($ret); + print_r($ret); $issueKey = $ret->{'key'}; $this->assertNotNull($issueKey); return $issueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'Create Failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('Create Failed : ' . $e->getMessage()); } } /** - * @depends testCreateIssue - * @param $issueKey + * @test + * @depends create_issue */ - public function testIssueGet($issueKey) + public function get_created_issue(string $issueKey) : string { try { $issueService = new IssueService(); @@ -84,27 +97,59 @@ public function testIssueGet($issueKey) $this->assertNotNull($ret->fields->issuetype); return $issueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'Create Failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('Create Failed : ' . $e->getMessage()); } } /** - * @depends testIssueGet + * @test + * @depends get_created_issue */ - public function testCreateSubTask($issueKey) + public function update_issue(string $subTaskIssueKey) :string + { + //$this->markTestIncomplete(); + try { + $issueField = new IssueField(true); + + $issueField->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Major') + ->setIssueTypeAsString('Task') + ->addLabelAsString('test-label-first') + ->addLabelAsString('test-label-second') + ->addVersionAsString('1.0.1') + ->addVersionAsArray(['1.0.2']) + ->setDescription('This is a shorthand for a set operation on the summary field'); + + $issueService = new IssueService(); + + $issueService->update($subTaskIssueKey, $issueField); + + $this->assertNotNull($subTaskIssueKey); + + return $subTaskIssueKey; + } catch (Exception $e) { + $this->fail('update Failed : ' . $e->getMessage()); + } + } + + /** + * @test + * @depends update_issue + */ + public function create_subTask_issue(string $issueKey) :string { try { $issueField = new IssueField(); $issueField->setProjectKey('TEST') ->setSummary("Subtask - something's wrong") - ->setAssigneeName('lesstif') - ->setPriorityName('Critical') + ->setAssigneeNameAsString('lesstif') + ->setPriorityNameAsString('Critical') ->setDescription('Subtask - Full description for issue') - ->addVersion('1.0.1') - ->addVersion('1.0.3') - ->setIssueType('Sub-task') + ->addVersionAsString('1.0.1') + ->addVersionAsString('1.0.3') + ->setIssueTypeAsString('Sub-task') ->setParentKeyOrId($issueKey); $issueService = new IssueService(); @@ -116,15 +161,16 @@ public function testCreateSubTask($issueKey) $this->assertNotNull($subTaskIssueKey); return $subTaskIssueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'Create Failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('Create Failed : ' . $e->getMessage()); } } /** - * @depends testCreateSubTask + * @test + * @depends create_subTask_issue */ - public function testGetSubTask($subTaskIssueKey) + public function get_created_subtask_issue(string $subTaskIssueKey) : string { try { $issueService = new IssueService(); @@ -138,15 +184,16 @@ public function testGetSubTask($subTaskIssueKey) //$this->assertEquals('Sub-task', $ret->fields->issuetype->name); return $subTaskIssueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'Create Failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('Create Failed : ' . $e->getMessage()); } } /** - * @depends testGetSubTask + * @test + * @depends get_created_subtask_issue */ - public function testAddAttachment($subTaskIssueKey) + public function add_attachment_on_subtask_issue(string $subTaskIssueKey) :string { try { $files = [ @@ -164,45 +211,16 @@ public function testAddAttachment($subTaskIssueKey) $this->assertSameSize($files, $ret); return $subTaskIssueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'Attach Failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('Attach Failed : ' . $e->getMessage()); } } /** - * @depends testAddAttachment + * @test + * @depends add_attachment_on_subtask_issue */ - public function testUpdateIssue($subTaskIssueKey) - { - //$this->markTestIncomplete(); - try { - $issueField = new IssueField(true); - - $issueField->setAssigneeName('lesstif') - ->setPriorityName('Major') - //->setIssueType('Task') - ->addLabel('test-label-first') - ->addLabel('test-label-second') - ->addVersion('1.0.1') - ->addVersion('1.0.2') - ->setDescription('This is a shorthand for a set operation on the summary field'); - - $issueService = new IssueService(); - - $issueService->update($subTaskIssueKey, $issueField); - - $this->assertNotNull($subTaskIssueKey); - - return $subTaskIssueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'update Failed : '.$e->getMessage()); - } - } - - /** - * @depends testUpdateIssue - */ - public function testChangeAssignee($subTaskIssueKey) + public function change_assignee(string $subTaskIssueKey) :string { try { $issueService = new IssueService(); @@ -214,15 +232,16 @@ public function testChangeAssignee($subTaskIssueKey) $this->assertNotNull($subTaskIssueKey); return $subTaskIssueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'Change assignee failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('Change assignee failed : ' . $e->getMessage()); } } /** - * @depends testChangeAssignee + * @test + * @depends change_assignee */ - public function testDeleteIssue($subTaskIssueKey) + public function delete_issue(string $subTaskIssueKey) :string { $this->markTestSkipped(); @@ -234,15 +253,16 @@ public function testDeleteIssue($subTaskIssueKey) print_r($ret); return $subTaskIssueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'delete issue failed : '.$e->getMessage()); + } catch (Exception $e) { + $this->fail('delete issue failed : '.$e->getMessage()); } } /** - * @depends testChangeAssignee + * @test + * @depends change_assignee */ - public function testAddcomment($issueKey) + public function add_comments(string $subTaskIssueKey) :string { //$this->markTestIncomplete(); try { @@ -257,22 +277,24 @@ public function testAddcomment($issueKey) COMMENT; $comment->setBody($body) - ->setVisibility('role', 'Users'); + ->setVisibilityAsString('role', 'Users'); $issueService = new IssueService(); - $ret = $issueService->addComment($issueKey, $comment); + $ret = $issueService->addComment($subTaskIssueKey, $comment); print_r($ret); + $this->assertNotNull($ret); - return $issueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'add Comment Failed : '.$e->getMessage()); + return $subTaskIssueKey; + } catch (Exception $e) { + $this->fail('add Comment Failed : ' . $e->getMessage()); } } /** - * @depends testAddcomment + * @test + * @depends add_comments */ - public function testTransition($issueKey) + public function testTransition(string $subTaskIssueKey) : string { try { $transition = new Transition(); @@ -280,32 +302,38 @@ public function testTransition($issueKey) $transition->setCommentBody('Issue close by REST API.'); $issueService = new IssueService(); - $ret = $issueService->transition($issueKey, $transition); + $ret = $issueService->transition($subTaskIssueKey, $transition); - return $issueKey; - } catch (JiraException $e) { - $this->assertTrue(false, 'testTransition Failed : '.$e->getMessage()); + $this->assertNotNull($ret); + + return $subTaskIssueKey; + } catch (Exception $e) { + $this->fail('testTransition Failed : ' . $e->getMessage()); } } /** - * @depends testTransition + * @test + * @depends add_comments */ - public function testSearch() + public function issue_search() { $jql = 'project not in (TEST) and assignee = currentUser() and status in (Resolved, closed)'; try { $issueService = new IssueService(); $ret = $issueService->search($jql); - Dumper::dump($ret); - } catch (JiraException $e) { - $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage()); + $this->assertNotNull($ret); + + // Dumper::dump($ret); + } catch (Exception $e) { + $this->fail('testSearch Failed : ' . $e->getMessage()); } } /** - * @depends testSearch + * @test + * @depends issue_search */ public function testCustomField() { @@ -314,9 +342,11 @@ public function testCustomField() $issueService = new IssueService(); $ret = $issueService->search($jql); - Dumper::dump($ret); - } catch (JiraException $e) { - $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage()); + $this->assertNotNull($ret); + + //Dumper::dump($ret); + } catch (Exception $e) { + $this->fail('testSearch Failed : ' . $e->getMessage()); } } }