Steuerkram/tests/01_BelegUploadTest.php

57 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
/**
* Test 1: Beleg hochladen und in der Belegübersicht prüfen.
*
* Prüft, ob ein neu erstellter Beleg via Beleg::create() in
* Beleg::all() und Beleg::find() auffindbar ist.
*/
class BelegUploadTest extends TestCase
{
protected string $testName = 'Test 1: Beleg hochladen → Belegübersicht';
public function run(): void
{
$belegNr = 'TEST-' . uniqid();
$datum = date('Y-m-d');
$id = \Steuerkram\Models\Beleg::create([
'beleg_nr' => $belegNr,
'filename' => 'test-rechnung.pdf',
'storage_path' => 'static/uploads/test/test-rechnung.pdf',
'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', $belegNr),
'beleg_datum' => $datum,
'eingangs_datum' => $datum,
'rechnungs_nr' => 'RE-TEST-001',
'betrag_brutto' => 119.00,
'belegtyp' => 'Eingangsrechnung',
'notes' => 'Automatisch erstellt (Test)',
]);
$this->assertGreaterThan(0, $id, 'Beleg wurde in der DB angelegt (ID > 0)');
// Beleg via find() abrufbar
$beleg = \Steuerkram\Models\Beleg::find($id);
$this->assertNotEmpty($beleg, 'Beleg::find() liefert einen Datensatz');
$this->assertEquals($belegNr, $beleg['beleg_nr'] ?? null, 'Belegnummer stimmt überein');
$this->assertEquals('Eingangsrechnung', $beleg['belegtyp'] ?? null, 'Belegtyp ist Eingangsrechnung');
// Beleg erscheint in Beleg::all() (ohne Jahr-Filter, um sicher zu finden)
$result = \Steuerkram\Models\Beleg::all([], 1, 999);
$found = false;
foreach ($result['rows'] as $row) {
if ((int)$row['id'] === $id) {
$found = true;
break;
}
}
$this->assert($found, 'Beleg erscheint in Beleg::all() (Belegübersicht)');
$this->assertGreaterThan(0, $result['total'], 'Belegübersicht enthält mindestens 1 Eintrag');
// Betrag korrekt gespeichert
$this->assertEquals(119.00, (float)($beleg['betrag_brutto'] ?? 0), 'Betrag brutto korrekt gespeichert');
}
}