Steuerkram/tests/46_BelegLieferantInlineTest.php

55 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
use Steuerkram\Models\Beleg;
use Steuerkram\Models\Supplier;
class BelegLieferantInlineTest extends TestCase
{
protected string $testName = 'Test 46: Beleg-Lieferant Inline-Update via updateSupplier()';
public function run(): void
{
$belegId = Beleg::create([
'beleg_nr' => 'TEST-SUPP-' . uniqid(),
'filename' => 'inline-supplier-test.pdf',
'storage_path' => '',
'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', 'inline-supplier-' . uniqid()),
'beleg_datum' => date('Y-m-d'),
'belegtyp' => 'Eingangsrechnung',
]);
$this->assertGreaterThan(0, $belegId, 'Beleg angelegt');
// Kein Lieferant initial
$beleg = Beleg::find($belegId);
$this->assert($beleg['supplier_name'] === null || $beleg['supplier_name'] === '', 'Kein Lieferant initial');
// Lieferant setzen
$supplierId = Supplier::findOrCreate('Testfirma GmbH');
$this->assertGreaterThan(0, $supplierId, 'Supplier angelegt oder gefunden');
Beleg::updateSupplier($belegId, $supplierId);
$beleg = Beleg::find($belegId);
$this->assertEquals('Testfirma GmbH', $beleg['supplier_name'], 'Lieferant nach updateSupplier gesetzt');
// Lieferant auf null zurücksetzen (löschen)
Beleg::updateSupplier($belegId, null);
$beleg = Beleg::find($belegId);
$this->assert(
$beleg['supplier_name'] === null || $beleg['supplier_name'] === '',
'Lieferant nach Nullsetzung leer'
);
// updateSupplier darf bei gesperrtem Beleg nichts ändern
\Steuerkram\Database::execute('UPDATE belege SET locked=1 WHERE id=?', [$belegId]);
$supplierId2 = Supplier::findOrCreate('Gesperrte Firma');
Beleg::updateSupplier($belegId, $supplierId2);
$beleg = Beleg::find($belegId);
$this->assert(
$beleg['supplier_name'] === null || $beleg['supplier_name'] === '',
'Lieferant bei gesperrtem Beleg unverändert'
);
}
}