Finanzmanager/tests/03_RouterTest.php
fds2610-bot b1712bb7ea Phase 0: Projektgerüst mit nginx, php-fpm und MariaDB
Docker Compose mit drei Services (nginx auf Port 8000), Migrationsmechanik,
Update- und Backup-Skript. Anwendung: Router mit CSRF-Prüfung, Anmeldung und
Ersteinrichtung, zentraler Einstellungsdialog mit Reitern, ein- und
ausschaltbares Debug-Log mit Maskierung von Zugangsdaten.

Layout nach Vorbild des FinanzManagers: feste Navigation links,
Werkzeugleiste oben, Tab-Leiste; Farbschema hell/dunkel/System.

Tests: 51 PHP-Prüfungen und 7 Playwright-Tests, alle grün.
2026-08-09 20:21:42 +02:00

47 lines
1.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
use Finanzmanager\Router;
class RouterTest extends TestCase
{
protected string $testName = 'Test 03: Routing';
public function run(): void
{
$this->einfachePfade();
$this->platzhalter();
$this->keineTeiltreffer();
}
private function einfachePfade(): void
{
$this->assertEquals([], Router::passt('/', '/'), 'Wurzelpfad passt');
$this->assertEquals([], Router::passt('/einstellungen', '/einstellungen'), 'Fester Pfad passt');
$this->assertNull(Router::passt('/einstellungen', '/konten'), 'Anderer Pfad passt nicht');
}
private function platzhalter(): void
{
$treffer = Router::passt('/konten/{id}', '/konten/42');
$this->assertEquals('42', $treffer['id'] ?? null, 'Platzhalter liefert den Wert');
$treffer = Router::passt('/konten/{id}/buchungen/{buchung}', '/konten/7/buchungen/199');
$this->assertEquals('7', $treffer['id'] ?? null, 'Erster Platzhalter stimmt');
$this->assertEquals('199', $treffer['buchung'] ?? null, 'Zweiter Platzhalter stimmt');
}
private function keineTeiltreffer(): void
{
// Der Platzhalter darf keinen Schrägstrich verschlucken – sonst würde
// /konten/{id} auch /konten/1/bearbeiten abfangen.
$this->assertNull(
Router::passt('/konten/{id}', '/konten/1/bearbeiten'),
'Platzhalter greift nicht über Pfadgrenzen hinweg'
);
$this->assertNull(Router::passt('/konten', '/konten/1'), 'Fester Pfad matcht keinen Unterpfad');
$this->assertNull(Router::passt('/konten', '/xkonten'), 'Kein Treffer bei Präfix davor');
}
}