Handling SEPA Direct Payment

This commit is contained in:
2026-10-04 16:47:15 +02:00
parent 9e9ea0cfd5
commit d511dbdd66
25 changed files with 801 additions and 43 deletions
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace Tests\Unit;
use App\Support\CreditorId;
use PHPUnit\Framework\TestCase;
class CreditorIdTest extends TestCase
{
public function test_normalizes_spaces_and_case(): void
{
$this->assertSame('DE98ZZZ09999999999', CreditorId::normalize(' de98 zzz 0999 9999 999 '));
}
public function test_accepts_the_bundesbank_test_id(): void
{
$this->assertTrue(CreditorId::isValid('DE98ZZZ09999999999'));
$this->assertTrue(CreditorId::isValid('de98 zzz 09999999999'));
}
public function test_business_code_does_not_affect_the_check_digit(): void
{
// Die Geschäftsbereichskennung (Stellen 5-7) wählt der Gläubiger selbst -- die Prüfziffer bleibt.
$this->assertTrue(CreditorId::isValid('DE98ABC09999999999'));
}
public function test_rejects_a_wrong_check_digit(): void
{
$this->assertFalse(CreditorId::isValid('DE97ZZZ09999999999'));
$this->assertFalse(CreditorId::isValid('DE98ZZZ09999999998'));
}
public function test_rejects_a_wrong_german_length(): void
{
$this->assertFalse(CreditorId::isValid('DE98ZZZ0999999999'));
$this->assertFalse(CreditorId::isValid('DE98ZZZ099999999990'));
}
public function test_rejects_malformed_input(): void
{
$this->assertFalse(CreditorId::isValid(''));
$this->assertFalse(CreditorId::isValid('DE02120300000000202051')); // eine IBAN
$this->assertFalse(CreditorId::isValid('DEXXZZZ09999999999'));
}
}