69 lines
2.4 KiB
PHP
69 lines
2.4 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
/**
|
||
* Test 14: USt- und Brutto-Anzeige im Buchungsformular
|
||
*
|
||
* Prüft, dass die notwendigen HTML-Elemente (Teil-View _buchungsform.php)
|
||
* und die JS-Funktion updateNettoAnzeige() (static/js/beleg-form.js)
|
||
* vorhanden sind.
|
||
*/
|
||
class UstBruttoAnzeigeTest extends TestCase
|
||
{
|
||
protected string $testName = 'Test 14: USt- und Brutto-Anzeige im Buchungsformular';
|
||
|
||
public function run(): void
|
||
{
|
||
$viewFile = __DIR__ . '/../src/Views/belege/_buchungsform.php';
|
||
$jsFile = __DIR__ . '/../public/static/js/beleg-form.js';
|
||
$viewContent = file_get_contents($viewFile);
|
||
$jsContent = file_get_contents($jsFile);
|
||
$content = $viewContent . "\n" . $jsContent;
|
||
|
||
$this->assert(
|
||
$viewContent !== false,
|
||
'Teil-View belege/_buchungsform.php ist lesbar'
|
||
);
|
||
|
||
$this->assert(
|
||
$jsContent !== false,
|
||
'JS-Datei static/js/beleg-form.js ist lesbar'
|
||
);
|
||
|
||
$this->assert(
|
||
str_contains($content, 'id="betrag_netto_input"'),
|
||
'Nettobetrag-Input hat id="betrag_netto_input"'
|
||
);
|
||
|
||
$this->assert(
|
||
str_contains($content, 'id="ust_brutto_anzeige"'),
|
||
'Anzeigebereich id="ust_brutto_anzeige" vorhanden'
|
||
);
|
||
|
||
// Kein Inline-Handler mehr im Markup (CSP) – die Verdrahtung läuft über
|
||
// zentrale addEventListener()-Aufrufe in beleg-form.js.
|
||
$this->assert(
|
||
!str_contains($viewContent, 'oninput=') && !str_contains($viewContent, 'onchange='),
|
||
'Nettobetrag-Input/USt-Satz-Select haben keine Inline-Handler mehr'
|
||
);
|
||
|
||
$this->assert(
|
||
str_contains($jsContent, 'function updateNettoAnzeige()'),
|
||
'JavaScript-Funktion updateNettoAnzeige() ist definiert'
|
||
);
|
||
|
||
$this->assert(
|
||
str_contains($jsContent, "_betragNettoInput.addEventListener('input', updateNettoAnzeige)"),
|
||
'Nettobetrag-Input ruft updateNettoAnzeige() bei Eingabe auf'
|
||
);
|
||
|
||
// Prüfe dass USt-Satz-Änderung auch updateNettoAnzeige aufruft
|
||
$this->assert(
|
||
str_contains($jsContent, '_ustSatzSelect.addEventListener')
|
||
&& str_contains($jsContent, 'updateSteuerartVisibility();')
|
||
&& str_contains($jsContent, 'updateNettoAnzeige();'),
|
||
'USt-Satz-Änderung löst auch updateNettoAnzeige() aus'
|
||
);
|
||
}
|
||
}
|