diff --git a/src/Model/Todo/TodoDeadline.php b/src/Model/Todo/TodoDeadline.php index a424546..5af13c6 100644 --- a/src/Model/Todo/TodoDeadline.php +++ b/src/Model/Todo/TodoDeadline.php @@ -33,8 +33,8 @@ public static function fromString(string $deadline): TodoDeadline private function __construct(string $deadline) { - $this->deadline = new \DateTimeImmutable($deadline, new \DateTimeZone('UTC')); - $this->createdOn = new \DateTimeImmutable('now', new \DateTimeZone('UTC')); + $this->deadline = new \DateTimeImmutable($deadline); + $this->createdOn = new \DateTimeImmutable('now', $this->deadline->getTimezone()); } public function isInThePast(): bool @@ -54,7 +54,7 @@ public function createdOn(): string public function isMet(): bool { - return $this->deadline > new \DateTimeImmutable(); + return $this->deadline > new \DateTimeImmutable('now', $this->deadline->getTimezone()); } public function sameValueAs(ValueObject $object): bool diff --git a/tests/Model/Todo/TodoDeadlineTest.php b/tests/Model/Todo/TodoDeadlineTest.php index 03a5403..14433d8 100644 --- a/tests/Model/Todo/TodoDeadlineTest.php +++ b/tests/Model/Todo/TodoDeadlineTest.php @@ -33,13 +33,38 @@ public function it_correctly_validates_the_deadline($deadline, $inThePast): void } } + /** + * @test + * @dataProvider getDeadlines + */ + public function it_correctly_validates_the_deadline_is_met($deadline, $inThePast): void + { + $deadline = TodoDeadline::fromString($deadline); + $isMet = $deadline->isMet(); + + if ($inThePast) { + $this->assertFalse($isMet, 'Deadline is not met'); + } else { + $this->assertTrue($isMet, 'Deadline is met'); + } + } + + public function getDeadlines(): array { return [ [ - '2047-02-01 10:00:00', + '2049-12-15T17:19:27+01:00', false, ], + [ + '2037-01-01 10:00:00', + false, + ], + [ + '2017-12-15T17:19:27+01:00', + true, + ], [ '1947-01-01 10:00:00', true,