(a) public/O-CHAT.html nach BEISPIELE/ verschoben, Test 93 hält den Webroot sauber. (b) bank/fints.php in Teil-Views + public/static/js/fints.js aufgeteilt. (c) settings/bankimport.php in Teil-Views + public/static/js/bankimport.js aufgeteilt. (d) src/Request.php angelegt, BankController als erster Controller umgestellt.
96 lines
5.1 KiB
PHP
96 lines
5.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Steuerkram\Request;
|
|
|
|
/**
|
|
* Test 94: Request-Helferklasse (Fix #161d)
|
|
*
|
|
* 176 Controller-Stellen griffen bisher direkt und uneinheitlich auf
|
|
* $_POST/$_GET zu (mal `?? ''`, mal `isset()`, mal `(int)`, mal `trim()`).
|
|
* Request::post()/postInt()/postFloat()/postDate()/get()/has() bündeln die
|
|
* Typumwandlung an einer Stelle. Dieser Test deckt die Helfer isoliert ab,
|
|
* ohne einen echten HTTP-Request zu benötigen.
|
|
*/
|
|
class RequestHelperTest extends TestCase
|
|
{
|
|
protected string $testName = 'Test 94: Request-Helferklasse';
|
|
|
|
public function run(): void
|
|
{
|
|
$_POST = [];
|
|
$_GET = [];
|
|
|
|
// ── post() ───────────────────────────────────────────────
|
|
$this->assertEquals('', Request::post('fehlt'), 'post(): fehlender Wert liefert Default ""');
|
|
$this->assertEquals('x', Request::post('fehlt', 'x'), 'post(): fehlender Wert liefert übergebenen Default');
|
|
$_POST['feld'] = 'wert';
|
|
$this->assertEquals('wert', Request::post('feld'), 'post(): vorhandener Wert wird durchgereicht');
|
|
|
|
// ── postInt() ────────────────────────────────────────────
|
|
unset($_POST['n']);
|
|
$this->assertEquals(0, Request::postInt('n'), 'postInt(): fehlender Wert liefert Default 0');
|
|
$this->assertEquals(7, Request::postInt('n', 7), 'postInt(): fehlender Wert liefert übergebenen Default');
|
|
|
|
$_POST['n'] = '';
|
|
$this->assertEquals(7, Request::postInt('n', 7), 'postInt(): leerer String liefert Default');
|
|
|
|
$_POST['n'] = 'abc';
|
|
$this->assertEquals(0, Request::postInt('n', 7), 'postInt(): "abc" wird zu 0 (kein Default, da Wert gesetzt ist)');
|
|
|
|
$_POST['n'] = '12';
|
|
$this->assertEquals(12, Request::postInt('n'), 'postInt(): "12" wird zu 12');
|
|
|
|
$_POST['n'] = '12.7';
|
|
$this->assertEquals(12, Request::postInt('n'), 'postInt(): "12.7" wird zu 12 (int-Cast schneidet ab)');
|
|
|
|
// ── postFloat() ──────────────────────────────────────────
|
|
unset($_POST['betrag']);
|
|
$this->assertEquals(0.0, Request::postFloat('betrag'), 'postFloat(): fehlender Wert liefert Default 0.0');
|
|
$this->assertEquals(9.5, Request::postFloat('betrag', 9.5), 'postFloat(): fehlender Wert liefert übergebenen Default');
|
|
|
|
$_POST['betrag'] = '';
|
|
$this->assertEquals(9.5, Request::postFloat('betrag', 9.5), 'postFloat(): leerer String liefert Default');
|
|
|
|
$_POST['betrag'] = '1234,56';
|
|
$this->assertEquals(1234.56, Request::postFloat('betrag'), 'postFloat(): deutsches Dezimalkomma wird korrekt geparst');
|
|
|
|
$_POST['betrag'] = '-119,00';
|
|
$this->assertEquals(-119.0, Request::postFloat('betrag'), 'postFloat(): negativer Betrag mit Komma');
|
|
|
|
// ── postDate() ───────────────────────────────────────────
|
|
unset($_POST['datum']);
|
|
$this->assertEquals(null, Request::postDate('datum'), 'postDate(): fehlender Wert liefert null');
|
|
|
|
$_POST['datum'] = '';
|
|
$this->assertEquals(null, Request::postDate('datum'), 'postDate(): leerer Wert liefert null');
|
|
|
|
$_POST['datum'] = '2026-05-15';
|
|
$this->assertEquals('2026-05-15', Request::postDate('datum'), 'postDate(): gültiges Format (Y-m-d) wird normalisiert zurückgegeben');
|
|
|
|
$_POST['datum'] = 'nicht-valide';
|
|
$this->assertEquals(null, Request::postDate('datum'), 'postDate(): ungültiges Format liefert null');
|
|
|
|
$_POST['datum'] = '15.05.2026';
|
|
$this->assertEquals('2026-05-15', Request::postDate('datum', 'd.m.Y'), 'postDate(): abweichendes Format wird korrekt geparst und normalisiert');
|
|
$this->assertEquals(null, Request::postDate('datum'), 'postDate(): Wert passt nicht zum Default-Format Y-m-d');
|
|
|
|
// ── get() ────────────────────────────────────────────────
|
|
$this->assertEquals('', Request::get('fehlt'), 'get(): fehlender Wert liefert Default ""');
|
|
$this->assertEquals(1, Request::get('seite', 1), 'get(): fehlender Wert liefert übergebenen Default');
|
|
$_GET['seite'] = '3';
|
|
$this->assertEquals('3', Request::get('seite', 1), 'get(): vorhandener Wert wird durchgereicht');
|
|
|
|
// ── has() ────────────────────────────────────────────────
|
|
unset($_POST['sandbox']);
|
|
$this->assert(Request::has('sandbox') === false, 'has(): fehlendes Feld liefert false');
|
|
$_POST['sandbox'] = '1';
|
|
$this->assert(Request::has('sandbox') === true, 'has(): vorhandenes Feld liefert true');
|
|
$_POST['leer'] = '';
|
|
$this->assert(Request::has('leer') === true, 'has(): auch ein leerer, aber gesetzter Wert zählt als vorhanden');
|
|
|
|
$_POST = [];
|
|
$_GET = [];
|
|
}
|
|
}
|