diff --git a/src/Domain/Timelog/ValueObject/ElapsedTime.php b/src/Domain/Timelog/ValueObject/ElapsedTime.php index c941b1a..247d6a3 100644 --- a/src/Domain/Timelog/ValueObject/ElapsedTime.php +++ b/src/Domain/Timelog/ValueObject/ElapsedTime.php @@ -41,13 +41,13 @@ public function toHuman(): string public function toHumanMinimal(): string { - if (! $this->seconds) { + if (0 === $this->hours && 0 === $this->minutes) { return '0 min'; } $hours = $this->hours > 0 ? "{$this->hours}H" : ''; $minutes = $this->minutes > 0 ? "{$this->minutes}min" : ''; - return "$hours $minutes"; + return trim("$hours $minutes"); } } diff --git a/tests/Unit/Timelog/ElapsedTimeTest.php b/tests/Unit/Timelog/ElapsedTimeTest.php index a1911d1..c5c0ff2 100644 --- a/tests/Unit/Timelog/ElapsedTimeTest.php +++ b/tests/Unit/Timelog/ElapsedTimeTest.php @@ -36,3 +36,18 @@ [180, 3], [200, 3], ]); + +it('shows time in Human Minimal Format', function (int $seconds, string $expectedTime): void { + $elapsedTime = ElapsedTime::fromSeconds($seconds); + expect($elapsedTime->toHumanMinimal())->toBe($expectedTime, message: "Wrong Human Minimal Format for '$seconds' seconds."); +})->with([ + [0, '0 min'], + [59, '0 min'], + [60, '1min'], + [120, '2min'], + [3599, '59min'], + [3600, '1H'], + [3659, '1H'], + [3660, '1H 1min'], + [4200, '1H 10min'], +]);