Steuerkram/tests/23_KundenNummernkreisTest.php

44 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
use Steuerkram\Models\Customer;
use Steuerkram\Models\Setting;
use Steuerkram\Database;
class KundenNummernkreisTest extends TestCase
{
protected string $testName = 'Test 23: Kunden-Nummernkreis konfigurierbar';
public function run(): void
{
$settings = Setting::get();
$this->assert(array_key_exists('customer_nr_prefix', $settings), 'customer_nr_prefix-Spalte existiert in company_settings');
// Präfix in den Einstellungen speichern und lesen
$originalPrefix = $settings['customer_nr_prefix'] ?? 'K-';
$testPrefix = 'TEST-';
Setting::update(array_merge($settings, ['customer_nr_prefix' => $testPrefix]));
$updated = Setting::get();
$this->assertEquals($testPrefix, $updated['customer_nr_prefix'], 'customer_nr_prefix wird korrekt gespeichert');
// Kundennummer mit neuem Präfix generieren
$nr = Customer::generateKundennummer();
$this->assert(str_starts_with($nr, $testPrefix), 'Generierte Kundennummer beginnt mit neuem Präfix');
$numericPart = substr($nr, strlen($testPrefix));
$this->assert(ctype_digit($numericPart), 'Numerischer Teil der Kundennummer enthält nur Ziffern');
$this->assert((int)$numericPart > 0, 'Numerischer Teil > 0');
// Zurücksetzen auf Standard-Präfix
Setting::update(array_merge($updated, ['customer_nr_prefix' => 'K-']));
$reset = Setting::get();
$this->assertEquals('K-', $reset['customer_nr_prefix'], 'Präfix auf K- zurückgesetzt');
// Kundennummer mit Default-Präfix K-
$nrDefault = Customer::generateKundennummer();
$this->assert(str_starts_with($nrDefault, 'K-'), 'Generierte Kundennummer beginnt mit K-');
// Originalwert wiederherstellen
Setting::update(array_merge($reset, ['customer_nr_prefix' => $originalPrefix]));
}
}