Steuerkram/tests/14_UstBruttoAnzeigeTest.php

66 lines
2.2 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'
);
$this->assert(
str_contains($content, 'oninput="updateNettoAnzeige()"'),
'Nettobetrag-Input ruft updateNettoAnzeige() bei Eingabe auf'
);
$this->assert(
str_contains($content, 'function updateNettoAnzeige()'),
'JavaScript-Funktion updateNettoAnzeige() ist definiert'
);
$this->assert(
str_contains($content, 'updateNettoAnzeige();updateNettoAnzeige()') === false
&& str_contains($content, 'updateNettoAnzeige()'),
'updateNettoAnzeige() wird an mehreren Stellen aufgerufen'
);
// Prüfe dass USt-Satz-Änderung auch updateNettoAnzeige aufruft
$this->assert(
str_contains($content, 'updateSteuerartVisibility();updateNettoAnzeige()'),
'USt-Satz-Änderung löst auch updateNettoAnzeige() aus'
);
}
}