OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

ViewRelativeTimeTest.php

1 KB
<?php

declare(strict_types=1);

use OpenNIT\Core\View;

/**
 * Deckt die Zeitanzeige „relativ + exakt" ab.
 *
 * Entscheidend ist, dass ältere Zeitpunkte den exakten Zeitpunkt sichtbar
 * mitliefern, frische Angaben schlank bleiben und die Ausgabe als fertiges
 * HTML sicher escaped ist.
 */
return static function (): void {

    $view = new View(sys_get_temp_dir());

    test('Ab einer Stunde Alter steht der exakte Zeitpunkt dahinter', function () use ($view) {
        $date = date('Y-m-d H:i:s', time() - 2 * 86400);
        $out  = $view->relativeTimeWithDate($date);

        assertTrue(str_starts_with($out, 'vor 2 Tagen'), $out);
        assertTrue(str_contains($out, '<span class="time-abs">'), $out);
        assertTrue(str_contains($out, date('d.m.Y, H:i', strtotime($date))), $out);
    });

    test('Frische Zeitpunkte bleiben ohne Datumszusatz', function () use ($view) {
        $out = $view->relativeTimeWithDate(date('Y-m-d H:i:s', time() - 300));
        assertSame('vor 5 Minuten', $out);

        assertSame('gerade eben', $view->relativeTimeWithDate(date('Y-m-d H:i:s')));
    });

    test('Null ergibt weiterhin „Nie"', function () use ($view) {
        assertSame('Nie', $view->relativeTimeWithDate(null));
    });

    test('Unlesbare Werte werden escaped durchgereicht', function () use ($view) {
        $out = $view->relativeTimeWithDate('<b>kein datum</b>');
        assertFalse(str_contains($out, '<b>'), $out);
    });
};