57 lines
2.3 KiB
PHP
57 lines
2.3 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,
|
|
'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 (direkt aus belege, nicht die berechnete Buchungssumme)
|
|
$raw = \Steuerkram\Database::fetchOne('SELECT betrag_brutto FROM belege WHERE id = ?', [$id]);
|
|
$this->assertEquals(119.00, (float)($raw['betrag_brutto'] ?? 0), 'Betrag brutto korrekt gespeichert');
|
|
}
|
|
}
|