Steuerkram/tests/14_UstBruttoAnzeigeTest.php

69 lines
2.4 KiB
PHP
Raw Permalink 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);
/**
* 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'
);
}
}