Convert test to use DataProvider. Add cleanup TODO to relativeTime

This commit is contained in:
Greg Sarjeant 2025-07-07 08:48:29 -04:00
parent 81123945f4
commit 7b7f8d205d
2 changed files with 22 additions and 22 deletions

View File

@ -30,6 +30,8 @@ class Util {
// For relative time display, compare the stored time to the current time
// and display it as "X seconds/minutes/hours/days etc." ago
//
// TODO: Convert to either accepting a DateTime or use DateTime->fromFormat()
public static function relative_time(string $tickTime): string {
$datetime = new DateTime($tickTime);
$now = new DateTime('now', $datetime->getTimezone());

View File

@ -1,31 +1,29 @@
<?php
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Attributes\DataProvider;
final class UtilTest extends TestCase
{
public function testCanDisplayRelativeTime(): void
{
// Define test date (strings) and expected outputs for
// testCanDisplayRelativeTime
public static function dateProvider(): array {
$datetime = new DateTimeImmutable();
$oneMinuteAgo = $datetime->modify('-1 minute')->format('c');
$relativeTime = Util::relative_time($oneMinuteAgo);
$this->assertSame($relativeTime, "1 minute ago");
$twoHoursAgo = $datetime->modify('-2 hours')->format('c');
$relativeTime = Util::relative_time($twoHoursAgo);
$this->assertSame($relativeTime, "2 hours ago");
$threeDaysAgo = $datetime->modify('-3 days')->format('c');
$relativeTime = Util::relative_time($threeDaysAgo);
$this->assertSame($relativeTime, "3 days ago");
$fourMonthsAgo = $datetime->modify('-4 months')->format('c');
$relativeTime = Util::relative_time($fourMonthsAgo);
$this->assertSame($relativeTime, "4 months ago");
$fiveYearsAgo = $datetime->modify('-5 years')->format('c');
$relativeTime = Util::relative_time($fiveYearsAgo);
$this->assertSame($relativeTime, "5 years ago");
return [
'1 minute ago' => [$datetime->modify('-1 minute')->format('c'), '1 minute ago'],
'2 hours ago' => [$datetime->modify('-2 hours')->format('c'), '2 hours ago'],
'3 days ago' => [$datetime->modify('-3 days')->format('c'), '3 days ago'],
'4 months ago' => [$datetime->modify('-4 months')->format('c'), '4 months ago'],
'5 years ago' => [$datetime->modify('-5 years')->format('c'), '5 years ago']
];
}
// Validate that the datetime strings provided by dateProvider
// yield the expected display strings
#[DataProvider('dateProvider')]
public function testCanDisplayRelativeTime(string $datetimeString, string $display): void {
$relativeTime = Util::relative_time($datetimeString);
$this->assertSame($relativeTime, $display);
}
}