jedesErgebnisHatEinenDeutschenSatz(); $this->derBanktextWirdKlartext(); $this->ohneWartendenVorgangGehtNichts(); } private function jedesErgebnisHatEinenDeutschenSatz(): void { $ergebnisse = [ VopVerificationResult::CompletedFullMatch, VopVerificationResult::CompletedCloseMatch, VopVerificationResult::CompletedNoMatch, VopVerificationResult::CompletedPartialMatch, VopVerificationResult::NotApplicable, ]; $saetze = []; foreach ($ergebnisse as $ergebnis) { $satz = FinTsUeberweisung::vopUrteil($ergebnis); $this->assertNotEmpty($satz, 'Ergebnis ' . $ergebnis . ' hat einen Satz'); $this->assert( !str_contains($satz, 'Completed') && !str_contains($satz, 'Match'), 'Ergebnis ' . $ergebnis . ' steht auf Deutsch da' ); $saetze[] = $satz; } $this->assertEquals(count($ergebnisse), count(array_unique($saetze)), 'Jedes Ergebnis hat seinen eigenen Satz'); // Auch ein unbekanntes oder fehlendes Ergebnis darf den Dialog nicht leer lassen. $this->assertNotEmpty(FinTsUeberweisung::vopUrteil(null), 'Ohne Ergebnis steht trotzdem ein Satz da'); $this->assertNotEmpty(FinTsUeberweisung::vopUrteil('Unbekannt'), 'Unbekanntes Ergebnis ebenso'); } private function derBanktextWirdKlartext(): void { // So liefern die Banken den Aufklärungstext: HTML mit Auszeichnung. $html = 'Der Name stimmt nicht überein.
Bitte prüfen.' . '

Wichtiger Hinweis: Die Überweisung wird ohne Korrektur ausgeführt.

'; $text = FinTsUeberweisung::vopHinweis($html); $this->assert(!str_contains($text, '<'), 'Die Auszeichnung ist weg'); $this->assert(str_contains($text, 'Der Name stimmt nicht überein.'), 'Der Satz bleibt vollständig'); $this->assert(str_contains($text, 'Bitte prüfen.'), 'Entities werden aufgelöst'); $this->assert(str_contains($text, "überein.\nBitte prüfen."), 'Aus
wird ein Zeilenumbruch'); $this->assert( str_contains($text, 'Wichtiger Hinweis: Die Überweisung wird ohne Korrektur ausgeführt.'), 'Auch der letzte Absatz steht da' ); $this->assert(!str_contains($text, "\n\n\n"), 'Keine Leerzeilenwüsten'); $this->assertEquals('', FinTsUeberweisung::vopHinweis(''), 'Ohne Text bleibt es leer'); $this->assertEquals('', FinTsUeberweisung::vopHinweis(' '), 'Leerraum zählt als kein Text'); } private function ohneWartendenVorgangGehtNichts(): void { $this->assertNull(FinTsUeberweisung::offeneVopAnfrage(), 'Ohne Vorgang wartet kein Namensabgleich'); $ergebnis = FinTsUeberweisung::vopBestaetigen(); $this->assertEquals('fehler', $ergebnis['status'], 'Ohne Vorgang lässt sich nichts bestätigen'); $this->assertNotEmpty($ergebnis['meldung'], 'Und es gibt eine Erklärung dazu'); } }