Fix: Tests an aktuelle DB-Schema angepasst (eingangs_datum entfernt, bewirtungsfelder auf belege, steuercode-Filter)

This commit is contained in:
fds2610-bot 2026-04-12 10:11:36 +02:00
parent 7956fa67e3
commit 4f9d51ff05
4 changed files with 52 additions and 55 deletions

View file

@ -24,7 +24,6 @@ class BelegUploadTest extends TestCase
'mime_type' => 'application/pdf', 'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', $belegNr), 'file_hash' => hash('sha256', $belegNr),
'beleg_datum' => $datum, 'beleg_datum' => $datum,
'eingangs_datum' => $datum,
'rechnungs_nr' => 'RE-TEST-001', 'rechnungs_nr' => 'RE-TEST-001',
'betrag_brutto' => 119.00, 'betrag_brutto' => 119.00,
'belegtyp' => 'Eingangsrechnung', 'belegtyp' => 'Eingangsrechnung',
@ -51,7 +50,8 @@ class BelegUploadTest extends TestCase
$this->assert($found, 'Beleg erscheint in Beleg::all() (Belegübersicht)'); $this->assert($found, 'Beleg erscheint in Beleg::all() (Belegübersicht)');
$this->assertGreaterThan(0, $result['total'], 'Belegübersicht enthält mindestens 1 Eintrag'); $this->assertGreaterThan(0, $result['total'], 'Belegübersicht enthält mindestens 1 Eintrag');
// Betrag korrekt gespeichert // Betrag korrekt gespeichert (direkt aus belege, nicht die berechnete Buchungssumme)
$this->assertEquals(119.00, (float)($beleg['betrag_brutto'] ?? 0), 'Betrag brutto korrekt gespeichert'); $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');
} }
} }

View file

@ -50,9 +50,9 @@ class KontierungsvorschlagTest extends TestCase
private function createTestBeleg(): int private function createTestBeleg(): int
{ {
Database::execute( Database::execute(
"INSERT INTO belege (beleg_nr, filename, storage_path, mime_type, file_hash, eingangs_datum, belegtyp) "INSERT INTO belege (beleg_nr, filename, storage_path, mime_type, file_hash, belegtyp)
VALUES ('TEST-KI-0001', 'test.pdf', 'static/uploads/test/test.pdf', 'application/pdf', VALUES ('TEST-KI-0001', 'test.pdf', 'static/uploads/test/test.pdf', 'application/pdf',
SHA2('test', 256), CURDATE(), 'Eingangsrechnung')" SHA2('test', 256), 'Eingangsrechnung')"
); );
return (int)Database::lastInsertId(); return (int)Database::lastInsertId();
} }

View file

@ -37,9 +37,12 @@ class BewirtungssplitTest extends TestCase
'mime_type' => 'application/pdf', 'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', 'bew4650' . uniqid()), 'file_hash' => hash('sha256', 'bew4650' . uniqid()),
'beleg_datum' => $datum, 'beleg_datum' => $datum,
'eingangs_datum' => $datum,
'belegtyp' => 'Eingangsrechnung', 'belegtyp' => 'Eingangsrechnung',
]); ]);
\Steuerkram\Database::execute(
'UPDATE belege SET bewirtungsgrund = ?, teilnehmerliste = ? WHERE id = ?',
['Kundengespräch', 'Max Mustermann, Erika Mustermann', $beleg1]
);
// Bewirtungssplit direkt über Booking::create + zweite Buchung simulieren // Bewirtungssplit direkt über Booking::create + zweite Buchung simulieren
// (wie BookingController::bucheBewirtungssplit() es tut) // (wie BookingController::bucheBewirtungssplit() es tut)
@ -57,8 +60,6 @@ class BewirtungssplitTest extends TestCase
'betrag_netto' => $netto70, 'betrag_netto' => $netto70,
'ust_satz' => $ustSatz, 'ust_satz' => $ustSatz,
'buchungstext' => 'Bewirtung Test 70%', 'buchungstext' => 'Bewirtung Test 70%',
'bewirtungsgrund' => 'Kundengespräch',
'teilnehmerliste' => 'Max Mustermann, Erika Mustermann',
]); ]);
$id1b = \Steuerkram\Models\Booking::create([ $id1b = \Steuerkram\Models\Booking::create([
@ -70,8 +71,6 @@ class BewirtungssplitTest extends TestCase
'betrag_netto' => $netto30, 'betrag_netto' => $netto30,
'ust_satz' => $ustSatz, 'ust_satz' => $ustSatz,
'buchungstext' => 'Bewirtung Test 30%', 'buchungstext' => 'Bewirtung Test 30%',
'bewirtungsgrund' => 'Kundengespräch',
'teilnehmerliste' => 'Max Mustermann, Erika Mustermann',
]); ]);
$b1a = \Steuerkram\Models\Booking::find($id1a); $b1a = \Steuerkram\Models\Booking::find($id1a);
@ -95,9 +94,10 @@ class BewirtungssplitTest extends TestCase
'Gesamt-Vorsteuer korrekt (100% des Nettobetrags)' 'Gesamt-Vorsteuer korrekt (100% des Nettobetrags)'
); );
// Bewirtungsfelder gespeichert // Bewirtungsfelder auf dem Beleg gespeichert (seit Migration 024 in belege, nicht bookings)
$this->assertEquals('Kundengespräch', $b1a['bewirtungsgrund'], 'Bewirtungsgrund gespeichert'); $belegDaten = \Steuerkram\Models\Beleg::find($beleg1);
$this->assertEquals('Max Mustermann, Erika Mustermann', $b1a['teilnehmerliste'], 'Teilnehmerliste gespeichert'); $this->assertEquals('Kundengespräch', $belegDaten['bewirtungsgrund'], 'Bewirtungsgrund gespeichert');
$this->assertEquals('Max Mustermann, Erika Mustermann', $belegDaten['teilnehmerliste'], 'Teilnehmerliste gespeichert');
// ── Test 2: Split bei Konto 4651 ───────────────────────────── // ── Test 2: Split bei Konto 4651 ─────────────────────────────
$beleg2 = \Steuerkram\Models\Beleg::create([ $beleg2 = \Steuerkram\Models\Beleg::create([
@ -107,7 +107,6 @@ class BewirtungssplitTest extends TestCase
'mime_type' => 'application/pdf', 'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', 'bew4651' . uniqid()), 'file_hash' => hash('sha256', 'bew4651' . uniqid()),
'beleg_datum' => $datum, 'beleg_datum' => $datum,
'eingangs_datum' => $datum,
'belegtyp' => 'Eingangsrechnung', 'belegtyp' => 'Eingangsrechnung',
]); ]);
@ -155,7 +154,6 @@ class BewirtungssplitTest extends TestCase
'mime_type' => 'application/pdf', 'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', 'normal' . uniqid()), 'file_hash' => hash('sha256', 'normal' . uniqid()),
'beleg_datum' => $datum, 'beleg_datum' => $datum,
'eingangs_datum' => $datum,
'belegtyp' => 'Eingangsrechnung', 'belegtyp' => 'Eingangsrechnung',
]); ]);

View file

@ -37,7 +37,7 @@ class AutomatikkontenUstTest extends TestCase
$mapping = ['VSt19' => 19, 'USt19' => 19, 'VSt7' => 7, 'USt7' => 7]; $mapping = ['VSt19' => 19, 'USt19' => 19, 'VSt7' => 7, 'USt7' => 7];
$kontenMitSteuercode = \Steuerkram\Database::fetchAll( $kontenMitSteuercode = \Steuerkram\Database::fetchAll(
"SELECT kontonummer, steuercode FROM accounts WHERE steuercode IS NOT NULL LIMIT 20" "SELECT kontonummer, steuercode FROM accounts WHERE steuercode IS NOT NULL AND steuercode != '' LIMIT 20"
); );
$this->assertNotEmpty($kontenMitSteuercode, 'Konten mit Steuercode vorhanden'); $this->assertNotEmpty($kontenMitSteuercode, 'Konten mit Steuercode vorhanden');
@ -66,7 +66,6 @@ class AutomatikkontenUstTest extends TestCase
'mime_type' => 'application/pdf', 'mime_type' => 'application/pdf',
'file_hash' => hash('sha256', 'autoust' . uniqid()), 'file_hash' => hash('sha256', 'autoust' . uniqid()),
'beleg_datum' => $datum, 'beleg_datum' => $datum,
'eingangs_datum' => $datum,
'belegtyp' => 'Eingangsrechnung', 'belegtyp' => 'Eingangsrechnung',
]); ]);