Skip to content

Commit ed5e81b

Browse files
lesstifkjeong-lesstif
authored andcommitted
add Move issues to sprint and rank in SprintService
1 parent d0b00d3 commit ed5e81b

File tree

3 files changed

+96
-13
lines changed

3 files changed

+96
-13
lines changed

src/Sprint/Sprint.php

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace JiraCloud\Sprint;
66

7-
use DateTimeInterface;
87
use JiraCloud\JsonSerializableTrait;
98

109
class Sprint implements \JsonSerializable
@@ -30,6 +29,12 @@ class Sprint implements \JsonSerializable
3029

3130
public string $goal;
3231

32+
public ?string $rankBeforeIssue;
33+
public ?string $rankAfterIssue;
34+
public int $rankCustomFieldId;
35+
36+
public array $issues;
37+
3338
public function setNameAsString(string $sprintName): self
3439
{
3540
$this->name = $sprintName;
@@ -51,17 +56,38 @@ public function setOriginBoardIdAsStringOrInt(string|int $originBoardId): self
5156
return $this;
5257
}
5358

54-
public function setStartDateAsDateTime(DateTimeInterface $startDate, $format = 'Y-m-d'): static
59+
public function setStartDateAsDateTime(\DateTimeInterface $startDate, string $format = 'Y-m-d'): static
5560
{
5661
$this->startDate = $startDate->format($format);
5762

5863
return $this;
5964
}
6065

61-
public function setEndDateAsDateTime(DateTimeInterface $endDate, $format = 'Y-m-d'): static
66+
public function setStartDateAsString(string $startDate): static
67+
{
68+
$this->startDate = $startDate;
69+
70+
return $this;
71+
}
72+
73+
public function setEndDateAsDateTime(\DateTimeInterface $endDate, string $format = 'Y-m-d'): static
6274
{
6375
$this->endDate = $endDate->format($format);
6476

6577
return $this;
6678
}
79+
80+
public function setEndDateAsString(string $endDate): static
81+
{
82+
$this->endDate = $endDate;
83+
84+
return $this;
85+
}
86+
87+
public function setMoveIssues(array $issues): static
88+
{
89+
$this->issues = $issues;
90+
91+
return $this;
92+
}
6793
}

src/Sprint/SprintService.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public function getSprint(string|int $sprintId): Sprint
5454
* @throws \JsonMapper_Exception
5555
*
5656
* @return Issue[] array of Issue
57+
*
58+
* @see https://developer.atlassian.com/cloud/jira/software/rest/api-group-sprint/#api-rest-agile-1-0-sprint-sprintid-get
5759
*/
5860
public function getSprintIssues(string|int $sprintId, array $paramArray = [])
5961
{
@@ -68,6 +70,9 @@ public function getSprintIssues(string|int $sprintId, array $paramArray = [])
6870
return $issues;
6971
}
7072

73+
/**
74+
* @see https://developer.atlassian.com/cloud/jira/software/rest/api-group-sprint/#api-rest-agile-1-0-sprint-post
75+
*/
7176
public function createSprint(Sprint $sprint): Sprint
7277
{
7378
$data = json_encode($sprint);
@@ -81,4 +86,22 @@ public function createSprint(Sprint $sprint): Sprint
8186
new Sprint()
8287
);
8388
}
89+
90+
/**
91+
* @param int $sprintId
92+
* @param Sprint $sprint
93+
* @return bool
94+
* @throws JiraException
95+
* @see https://developer.atlassian.com/cloud/jira/software/rest/api-group-sprint/#api-rest-agile-1-0-sprint-sprintid-issue-post
96+
*/
97+
public function moveIssues2Sprint(int $sprintId, Sprint $sprint): bool
98+
{
99+
$data = json_encode($sprint);
100+
101+
$ret = $this->exec($this->uri.'/'.$sprintId.'/issue', $data);
102+
103+
$this->log->debug('moveIssues2Sprint result='.var_export($ret, true));
104+
105+
return $ret;
106+
}
84107
}

tests/SPrintTest.php

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@ class SPrintTest extends TestCase
2121
*/
2222
public function create_sprint() : int
2323
{
24-
$start = (new DateTime('NOW'))->add(DateInterval::createFromDateString('1 month 5 day'));
24+
$sprintStartDate = (new DateTime('NOW'))->add(DateInterval::createFromDateString('1 month 5 day'));
25+
26+
$sprintBoardId = 2;
2527

2628
$sp = (new Sprint())
29+
->setOriginBoardIdAsStringOrInt($sprintBoardId)
2730
->setNameAsString("My Sprint 1")
28-
->setGoalAsString("goal")
29-
->setOriginBoardIdAsStringOrInt(2)
30-
->setStartDateAsDateTime($start)
31-
->setEndDateAsDateTime($start->add(DateInterval::createFromDateString('3 week')))
31+
->setGoalAsString("Sprint 1 Goal")
32+
->setStartDateAsDateTime($sprintStartDate)
33+
->setEndDateAsDateTime($sprintStartDate->add(DateInterval::createFromDateString('3 week')))
3234
;
3335

3436
try {
@@ -41,7 +43,7 @@ public function create_sprint() : int
4143
return $sprint->id;
4244

4345
} catch (Exception $e) {
44-
$this->fail( 'testSearch Failed : '.$e->getMessage());
46+
$this->fail( 'create_sprint Failed : '.$e->getMessage());
4547
}
4648
}
4749

@@ -63,7 +65,7 @@ public function get_sprints(int $sprintId) : int
6365

6466
return $sprintId;
6567
} catch (Exception $e) {
66-
$this->fail('testSearch Failed : '.$e->getMessage());
68+
$this->fail('get_sprints Failed : '.$e->getMessage());
6769
}
6870
}
6971

@@ -72,18 +74,50 @@ public function get_sprints(int $sprintId) : int
7274
* @depends get_sprints
7375
*
7476
* @param int $sprintId
75-
* @return void
77+
* @return int
7678
*/
77-
public function get_issues_in_sprints(int $sprintId)
79+
public function get_issues_in_sprints(int $sprintId) : int
7880
{
7981
try {
8082
$sps = new SprintService();
8183

8284
$sprint = $sps->getSprintIssues($sprintId);
8385

8486
$this->assertNotNull($sprint);
87+
88+
return $sprintId;
89+
} catch (Exception $e) {
90+
$this->fail('get_issues_in_sprints Failed : '.$e->getMessage());
91+
}
92+
}
93+
94+
/**
95+
* @test
96+
* @depends get_issues_in_sprints
97+
*
98+
* @param int $sprintId
99+
* @return int
100+
*/
101+
public function move_issues_to_sprints(int $sprintId) : int
102+
{
103+
try {
104+
$sp = (new Sprint())
105+
->setMoveIssues([
106+
"MOBL-1",
107+
"MOBL-5",
108+
])
109+
110+
;
111+
112+
$sps = new SprintService();
113+
114+
$sprint = $sps->moveIssues2Sprint($sprintId, $sp);
115+
116+
$this->assertNotNull($sprint);
117+
118+
return $sprintId;
85119
} catch (Exception $e) {
86-
$this->fail('testSearch Failed : '.$e->getMessage());
120+
$this->fail('move_issues_to_sprints Failed : '.$e->getMessage());
87121
}
88122
}
89123
}

0 commit comments

Comments
 (0)