Skip to content

Commit ad58ad0

Browse files
committed
modified Version Service to work better.
1 parent b2b760d commit ad58ad0

File tree

4 files changed

+65
-30
lines changed

4 files changed

+65
-30
lines changed

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2450,9 +2450,11 @@ try {
24502450

24512451
$version->setName('1.0.0')
24522452
->setDescription('Generated by script')
2453-
->setReleased(true)
2454-
->setReleaseDate(new \DateTime())
2455-
->setProjectId($project->id);
2453+
->setReleased(false)
2454+
->setStartDateAsDateTime(new \DateTime())
2455+
->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('2 weeks 3 days')))
2456+
->setProjectId($project->id)
2457+
;
24562458

24572459
$res = $versionService->create($version);
24582460

@@ -2485,9 +2487,9 @@ try {
24852487
$ver->setName($ver->name . ' Updated name')
24862488
->setDescription($ver->description . ' Updated description')
24872489
->setReleased(false)
2488-
->setReleaseDate(
2489-
(new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days'))
2490-
);
2490+
->setStartDateAsDateTime(new \DateTime())
2491+
->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days')))
2492+
;
24912493

24922494
$res = $versionService->update($ver);
24932495

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 string $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(bool $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 setUserReleaseDate(string $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: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@ class VersionService extends \JiraCloud\JiraClient
1717
*/
1818
public function create(Version $version): Version
1919
{
20-
// to convert DateTimeInterface to string for payload
21-
if ($version->releaseDate instanceof \DateTimeInterface) {
22-
$version->releaseDate = $version->releaseDate->format('Y-m-d');
23-
}
24-
2520
$data = json_encode($version);
2621

2722
$this->log->info("Create Version=\n".$data);
@@ -85,12 +80,9 @@ public function update(Version $version): Version
8580
throw new JiraException($version->id.' is not a valid version id.');
8681
}
8782

88-
if ($version->releaseDate instanceof \DateTimeInterface) {
89-
$version->releaseDate = $version->releaseDate->format('Y-m-d');
90-
}
91-
9283
//Only one of 'releaseDate' and 'userReleaseDate' can be specified when editing a version."
9384
$version->userReleaseDate = null;
85+
$version->userStartDate = null;
9486

9587
$data = json_encode($version);
9688
$ret = $this->exec($this->uri.'/'.$version->id, $data, 'PUT');

tests/VersionTest.php

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
class VersionTest extends TestCase
1313
{
14-
private $project = 'TEST';
14+
private string $project = 'TEST';
1515

1616
/**
1717
* @test
@@ -30,22 +30,23 @@ public function create_version() :string
3030

3131
$version = new Version();
3232

33-
$version->setName($versionName)
33+
$version->setProjectId($project->id)
34+
->setName($versionName)
3435
->setDescription('Generated by script')
35-
->setReleased(true)
36-
->setReleaseDate(new \DateTime())
37-
->setProjectId($project->id);
36+
->setReleased(false)
37+
->setStartDateAsDateTime(new \DateTime())
38+
->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('2 weeks 3 days')))
39+
;
3840

3941
$res = $versionService->create($version);
4042

4143
$this->assertEquals($res->name, $versionName);
4244

4345
return $versionName;
4446
} catch (JiraException $e) {
45-
print("Error Occurred! " . $e->getMessage());
47+
$this->fail("Error Occurred! " . $e->getMessage());
4648
}
4749

48-
return $versionName;
4950
}
5051

5152
/**
@@ -68,16 +69,18 @@ public function update_project_version(string $versionName) : string
6869
$ver->setName($newVersionName)
6970
->setDescription($ver->description . ' Updated description')
7071
->setReleased(false)
71-
->setReleaseDate(
72-
(new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days'))
73-
);
72+
->setStartDateAsDateTime(new \DateTime())
73+
->setReleaseDateAsDateTime(
74+
(new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days'))
75+
)
76+
;
7477

7578
$res = $versionService->update($ver);
7679

7780
$this->assertEquals($res->name, $ver->name);
7881

7982
} catch (JiraException $e) {
80-
print("Error Occurred! " . $e->getMessage());
83+
$this->fail("Error Occurred! " . $e->getMessage());
8184
}
8285

8386
return $newVersionName;
@@ -97,9 +100,9 @@ public function delete_project_version(string $newVersionName)
97100

98101
$res = $versionService->delete($ver);
99102

100-
$this->assertEquals($res, true);
103+
$this->assertEquals(true, $res);
101104
} catch (JiraException $e) {
102-
print("Error Occurred! " . $e->getMessage());
105+
$this->fail("Error Occurred! " . $e->getMessage());
103106
}
104107
}
105108
}

0 commit comments

Comments
 (0)