Skip to content

Commit 82445a6

Browse files
committed
fixed #500
1 parent b5eb3ca commit 82445a6

File tree

4 files changed

+67
-25
lines changed

4 files changed

+67
-25
lines changed

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2282,8 +2282,10 @@ try {
22822282
$version->setName('1.0.0')
22832283
->setDescription('Generated by script')
22842284
->setReleased(true)
2285-
->setReleaseDate(new \DateTime())
2286-
->setProjectId($project->id);
2285+
->setStartDateAsDateTime(new \DateTime())
2286+
->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days')))
2287+
->setProjectId($project->id)
2288+
;
22872289

22882290
$res = $versionService->create($version);
22892291

@@ -2316,9 +2318,9 @@ try {
23162318
$ver->setName($ver->name . ' Updated name')
23172319
->setDescription($ver->description . ' Updated description')
23182320
->setReleased(false)
2319-
->setReleaseDate(
2320-
(new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days'))
2321-
);
2321+
->setStartDateAsDateTime(new \DateTime())
2322+
->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('2 weeks 3 days')))
2323+
;
23222324

23232325
$res = $versionService->update($ver);
23242326

src/Issue/Version.php

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@ class Version implements \JsonSerializable
2020

2121
public bool $released;
2222

23-
public \DateTimeInterface|string $releaseDate;
23+
public string $releaseDate;
2424

2525
public bool $overdue;
2626

2727
public ?string $userReleaseDate;
2828

2929
public int $projectId;
3030

31+
public ?string $startDate;
32+
public ?string $userStartDate;
33+
3134
public function __construct($name = null)
3235
{
3336
$this->name = $name;
@@ -74,7 +77,14 @@ public function setReleased($released): static
7477
return $this;
7578
}
7679

77-
public function setReleaseDate(DateTimeInterface $releaseDate): static
80+
public function setReleaseDateAsDateTime(DateTimeInterface $releaseDate, string $format='Y-m-d'): static
81+
{
82+
$this->releaseDate = $releaseDate->format($format);
83+
84+
return $this;
85+
}
86+
87+
public function setReleaseDateAsString(string $releaseDate): static
7888
{
7989
$this->releaseDate = $releaseDate;
8090

@@ -87,4 +97,32 @@ public function setUserReleaseDateAsDateTime($userReleaseDate): static
8797

8898
return $this;
8999
}
100+
101+
public function setStartDateAsDateTime(\DateTimeInterface $startDate, string $format='Y-m-d'): static
102+
{
103+
$this->startDate = $startDate->format($format);
104+
105+
return $this;
106+
}
107+
108+
public function setStartDateAsString(?string $startDate): static
109+
{
110+
$this->startDate = $startDate;
111+
112+
return $this;
113+
}
114+
115+
public function setUserStartDateAsDateTime(\DateTimeInterface $userStartDate, string $format='Y-m-d'): static
116+
{
117+
$this->userStartDate = $userStartDate->format($format);
118+
119+
return $this;
120+
}
121+
122+
public function setUserStartDateAsString(?string $userStartDate): static
123+
{
124+
$this->userStartDate = $userStartDate;
125+
126+
return $this;
127+
}
90128
}

src/Version/VersionService.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,20 +84,18 @@ public function get(string $id)
8484
*
8585
* @return Version
8686
*/
87-
public function update(Version $version)
87+
public function update(Version $version) : Version
8888
{
8989
if (!$version->id || !is_numeric($version->id)) {
9090
throw new JiraException($version->id.' is not a valid version id.');
9191
}
9292

93-
if ($version->releaseDate instanceof \DateTimeInterface) {
94-
$version->releaseDate = $version->releaseDate->format('Y-m-d');
95-
}
96-
97-
//Only one of 'releaseDate' and 'userReleaseDate' can be specified when editing a version."
93+
// avoid weird error "Only one of 'releaseDate' and 'userReleaseDate' can be specified when editing a version."
9894
$version->userReleaseDate = null;
95+
$version->userStartDate = null;
9996

10097
$data = json_encode($version);
98+
10199
$ret = $this->exec($this->uri.'/'.$version->id, $data, 'PUT');
102100

103101
return $this->json_mapper->map(

tests/VersionTest.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@
1010

1111
class VersionTest extends TestCase
1212
{
13-
private $project = 'TEST';
13+
private string $project = 'TEST';
1414

1515
/**
1616
* @test
17-
* @return void
18-
* @throws \JsonMapper_Exception
17+
*
1918
*/
2019
public function create_version() : string
2120
{
@@ -31,15 +30,16 @@ public function create_version() : string
3130

3231
$version->setName($versionName)
3332
->setDescription('Generated by script')
34-
->setReleased(true)
35-
->setReleaseDate(new \DateTime())
33+
->setReleased(false)
34+
->setUserStartDateAsDateTime(new \DateTime())
35+
->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('2 weeks 3 days')))
3636
->setProjectId($project->id);
3737

3838
$res = $versionService->create($version);
3939

4040
$this->assertEquals($res->name, $versionName);
4141
} catch (JiraException $e) {
42-
print("Error Occured! " . $e->getMessage());
42+
$this->fail("Error Occurred! " . $e->getMessage());
4343
}
4444

4545
return $versionName;
@@ -52,6 +52,7 @@ public function create_version() : string
5252
*/
5353
public function update_project_version(string $versionName) : string
5454
{
55+
$newVersionName = null;
5556
try {
5657
$versionService = new VersionService();
5758
$projectService = new ProjectService();
@@ -62,19 +63,22 @@ public function update_project_version(string $versionName) : string
6263
$ver->setName($ver->name . ' Updated name')
6364
->setDescription($ver->description . ' Updated description')
6465
->setReleased(false)
65-
->setReleaseDate(
66+
->setStartDateAsDateTime(new \DateTime())
67+
->setReleaseDateAsDateTime(
6668
(new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days'))
67-
);
69+
)
70+
;
6871

6972
$res = $versionService->update($ver);
7073

7174
$this->assertEquals($res->name, $ver->name);
7275

73-
return $ver->name;
76+
$newVersionName = $res->name;
7477
} catch (JiraException $e) {
75-
print("Error Occurred! " . $e->getMessage());
78+
$this->fail("Error Occurred! " . $e->getMessage());
7679
}
7780

81+
return $newVersionName;
7882
}
7983

8084
/**
@@ -91,9 +95,9 @@ public function delete_project_version(string $versionName) : string
9195

9296
$res = $versionService->delete($ver);
9397

94-
$this->assertEquals($res, true);
98+
$this->assertEquals(true, $res);
9599
} catch (JiraException $e) {
96-
print("Error Occured! " . $e->getMessage());
100+
$this->fail("Error Occurred! " . $e->getMessage());
97101
}
98102

99103
return $versionName;

0 commit comments

Comments
 (0)