From 4f9d51ff05daca185c3d9fca90763224cdfedb49 Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Sun, 12 Apr 2026 10:11:36 +0200 Subject: [PATCH] Fix: Tests an aktuelle DB-Schema angepasst (eingangs_datum entfernt, bewirtungsfelder auf belege, steuercode-Filter) --- tests/01_BelegUploadTest.php | 26 ++++++------ tests/11_KontierungsvorschlagTest.php | 4 +- tests/16_BewirtungssplitTest.php | 60 +++++++++++++-------------- tests/17_AutomatikkontenUstTest.php | 17 ++++---- 4 files changed, 52 insertions(+), 55 deletions(-) diff --git a/tests/01_BelegUploadTest.php b/tests/01_BelegUploadTest.php index 8a88d53..3f5f294 100644 --- a/tests/01_BelegUploadTest.php +++ b/tests/01_BelegUploadTest.php @@ -18,17 +18,16 @@ class BelegUploadTest extends TestCase $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)', + '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)'); @@ -51,7 +50,8 @@ class BelegUploadTest extends TestCase $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'); + // 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'); } } diff --git a/tests/11_KontierungsvorschlagTest.php b/tests/11_KontierungsvorschlagTest.php index 3b0df11..0d44082 100644 --- a/tests/11_KontierungsvorschlagTest.php +++ b/tests/11_KontierungsvorschlagTest.php @@ -50,9 +50,9 @@ class KontierungsvorschlagTest extends TestCase private function createTestBeleg(): int { 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', - SHA2('test', 256), CURDATE(), 'Eingangsrechnung')" + SHA2('test', 256), 'Eingangsrechnung')" ); return (int)Database::lastInsertId(); } diff --git a/tests/16_BewirtungssplitTest.php b/tests/16_BewirtungssplitTest.php index 6d3bbcd..172aa6f 100644 --- a/tests/16_BewirtungssplitTest.php +++ b/tests/16_BewirtungssplitTest.php @@ -31,15 +31,18 @@ class BewirtungssplitTest extends TestCase // ── Test 1: Split bei Konto 4650 ───────────────────────────── $beleg1 = \Steuerkram\Models\Beleg::create([ - 'beleg_nr' => 'TEST-BEW-4650-' . uniqid(), - 'filename' => 'test.pdf', - 'storage_path' => '', - 'mime_type' => 'application/pdf', - 'file_hash' => hash('sha256', 'bew4650' . uniqid()), - 'beleg_datum' => $datum, - 'eingangs_datum' => $datum, - 'belegtyp' => 'Eingangsrechnung', + 'beleg_nr' => 'TEST-BEW-4650-' . uniqid(), + 'filename' => 'test.pdf', + 'storage_path' => '', + 'mime_type' => 'application/pdf', + 'file_hash' => hash('sha256', 'bew4650' . uniqid()), + 'beleg_datum' => $datum, + '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 // (wie BookingController::bucheBewirtungssplit() es tut) @@ -57,8 +60,6 @@ class BewirtungssplitTest extends TestCase 'betrag_netto' => $netto70, 'ust_satz' => $ustSatz, 'buchungstext' => 'Bewirtung Test 70%', - 'bewirtungsgrund' => 'Kundengespräch', - 'teilnehmerliste' => 'Max Mustermann, Erika Mustermann', ]); $id1b = \Steuerkram\Models\Booking::create([ @@ -70,8 +71,6 @@ class BewirtungssplitTest extends TestCase 'betrag_netto' => $netto30, 'ust_satz' => $ustSatz, 'buchungstext' => 'Bewirtung Test 30%', - 'bewirtungsgrund' => 'Kundengespräch', - 'teilnehmerliste' => 'Max Mustermann, Erika Mustermann', ]); $b1a = \Steuerkram\Models\Booking::find($id1a); @@ -95,20 +94,20 @@ class BewirtungssplitTest extends TestCase 'Gesamt-Vorsteuer korrekt (100% des Nettobetrags)' ); - // Bewirtungsfelder gespeichert - $this->assertEquals('Kundengespräch', $b1a['bewirtungsgrund'], 'Bewirtungsgrund gespeichert'); - $this->assertEquals('Max Mustermann, Erika Mustermann', $b1a['teilnehmerliste'], 'Teilnehmerliste gespeichert'); + // Bewirtungsfelder auf dem Beleg gespeichert (seit Migration 024 in belege, nicht bookings) + $belegDaten = \Steuerkram\Models\Beleg::find($beleg1); + $this->assertEquals('Kundengespräch', $belegDaten['bewirtungsgrund'], 'Bewirtungsgrund gespeichert'); + $this->assertEquals('Max Mustermann, Erika Mustermann', $belegDaten['teilnehmerliste'], 'Teilnehmerliste gespeichert'); // ── Test 2: Split bei Konto 4651 ───────────────────────────── $beleg2 = \Steuerkram\Models\Beleg::create([ - 'beleg_nr' => 'TEST-BEW-4651-' . uniqid(), - 'filename' => 'test2.pdf', - 'storage_path' => '', - 'mime_type' => 'application/pdf', - 'file_hash' => hash('sha256', 'bew4651' . uniqid()), - 'beleg_datum' => $datum, - 'eingangs_datum' => $datum, - 'belegtyp' => 'Eingangsrechnung', + 'beleg_nr' => 'TEST-BEW-4651-' . uniqid(), + 'filename' => 'test2.pdf', + 'storage_path' => '', + 'mime_type' => 'application/pdf', + 'file_hash' => hash('sha256', 'bew4651' . uniqid()), + 'beleg_datum' => $datum, + 'belegtyp' => 'Eingangsrechnung', ]); $id2a = \Steuerkram\Models\Booking::create([ @@ -149,14 +148,13 @@ class BewirtungssplitTest extends TestCase $bankCheck = $this->findAccountId('4600'); if ($bankCheck) { $beleg3 = \Steuerkram\Models\Beleg::create([ - 'beleg_nr' => 'TEST-BEW-NORMAL-' . uniqid(), - 'filename' => 'test3.pdf', - 'storage_path' => '', - 'mime_type' => 'application/pdf', - 'file_hash' => hash('sha256', 'normal' . uniqid()), - 'beleg_datum' => $datum, - 'eingangs_datum' => $datum, - 'belegtyp' => 'Eingangsrechnung', + 'beleg_nr' => 'TEST-BEW-NORMAL-' . uniqid(), + 'filename' => 'test3.pdf', + 'storage_path' => '', + 'mime_type' => 'application/pdf', + 'file_hash' => hash('sha256', 'normal' . uniqid()), + 'beleg_datum' => $datum, + 'belegtyp' => 'Eingangsrechnung', ]); $idNormal = \Steuerkram\Models\Booking::create([ diff --git a/tests/17_AutomatikkontenUstTest.php b/tests/17_AutomatikkontenUstTest.php index 8a7077b..9cdf35c 100644 --- a/tests/17_AutomatikkontenUstTest.php +++ b/tests/17_AutomatikkontenUstTest.php @@ -37,7 +37,7 @@ class AutomatikkontenUstTest extends TestCase $mapping = ['VSt19' => 19, 'USt19' => 19, 'VSt7' => 7, 'USt7' => 7]; $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'); @@ -60,14 +60,13 @@ class AutomatikkontenUstTest extends TestCase } $belegId = \Steuerkram\Models\Beleg::create([ - 'beleg_nr' => 'TEST-AUTOUST-' . uniqid(), - 'filename' => 'test.pdf', - 'storage_path' => '', - 'mime_type' => 'application/pdf', - 'file_hash' => hash('sha256', 'autoust' . uniqid()), - 'beleg_datum' => $datum, - 'eingangs_datum' => $datum, - 'belegtyp' => 'Eingangsrechnung', + 'beleg_nr' => 'TEST-AUTOUST-' . uniqid(), + 'filename' => 'test.pdf', + 'storage_path' => '', + 'mime_type' => 'application/pdf', + 'file_hash' => hash('sha256', 'autoust' . uniqid()), + 'beleg_datum' => $datum, + 'belegtyp' => 'Eingangsrechnung', ]); $bookingId = \Steuerkram\Models\Booking::create([