75 lines
2.6 KiB
PHP
75 lines
2.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Test 61: Netto/Brutto-Umschalter im Buchungsformular
|
|
*
|
|
* Prüft, dass im Beleg-Detailview die beiden Umschalt-Buttons für
|
|
* Netto- bzw. Bruttobetrag vorhanden sind und die zugehörige JS-Logik
|
|
* (Moduswechsel, Umrechnung, Konvertierung vor dem Absenden) existiert.
|
|
*/
|
|
class BetragModusToggleTest extends TestCase
|
|
{
|
|
protected string $testName = 'Test 61: Netto/Brutto-Umschalter im Buchungsformular';
|
|
|
|
public function run(): void
|
|
{
|
|
$viewFile = __DIR__ . '/../src/Views/belege/detail.php';
|
|
$content = file_get_contents($viewFile);
|
|
|
|
$this->assert(
|
|
$content !== false,
|
|
'View-Datei belege/detail.php ist lesbar'
|
|
);
|
|
|
|
$this->assert(
|
|
str_contains($content, 'id="betrag_modus_netto_btn"')
|
|
&& str_contains($content, 'id="betrag_modus_brutto_btn"'),
|
|
'Beide Umschalt-Buttons (Netto/Brutto) sind vorhanden'
|
|
);
|
|
|
|
$this->assert(
|
|
str_contains($content, "onclick=\"setBetragModus('netto')\"")
|
|
&& str_contains($content, "onclick=\"setBetragModus('brutto')\""),
|
|
'Buttons rufen setBetragModus() mit dem jeweiligen Modus auf'
|
|
);
|
|
|
|
$this->assert(
|
|
str_contains($content, 'function setBetragModus(modus)'),
|
|
'JavaScript-Funktion setBetragModus() ist definiert'
|
|
);
|
|
|
|
$this->assert(
|
|
str_contains($content, 'function getBetragModus()'),
|
|
'JavaScript-Funktion getBetragModus() ist definiert'
|
|
);
|
|
|
|
$this->assert(
|
|
str_contains($content, "classList.toggle('active'"),
|
|
'Aktiver Button wird optisch (CSS-Klasse) hervorgehoben'
|
|
);
|
|
|
|
// Vor dem Absenden muss im Brutto-Modus der Feldwert in den Nettobetrag
|
|
// umgerechnet werden, da das Backend ausschließlich betrag_netto erwartet.
|
|
$this->assert(
|
|
str_contains($content, "if (_betragModus !== 'brutto') return;")
|
|
&& str_contains($content, "addEventListener('submit'"),
|
|
'Vor dem Absenden wird im Brutto-Modus auf Nettobetrag umgerechnet'
|
|
);
|
|
|
|
// CSS-Klasse für den Umschalter muss definiert sein
|
|
$cssFile = __DIR__ . '/../public/static/css/app.css';
|
|
$cssContent = file_get_contents($cssFile);
|
|
|
|
$this->assert(
|
|
$cssContent !== false && str_contains($cssContent, '.betrag-modus-btn'),
|
|
'CSS-Klasse .betrag-modus-btn ist definiert'
|
|
);
|
|
|
|
$this->assert(
|
|
str_contains($cssContent, '.betrag-modus-btn.active'),
|
|
'CSS für aktiven Zustand des Umschalters ist definiert'
|
|
);
|
|
}
|
|
}
|