assertGreaterThan(0, $id, 'Lieferant wurde angelegt (ID > 0)'); // 2. find() liefert den angelegten Lieferanten $supplier = \Steuerkram\Models\Supplier::find($id); $this->assertNotEmpty($supplier, 'Supplier::find() liefert Datensatz'); $this->assertEquals($name, $supplier['name'], 'Lieferantenname stimmt überein'); // 3. findByName() findet den Lieferanten $found = \Steuerkram\Models\Supplier::findByName($name); $this->assertNotEmpty($found, 'Supplier::findByName() findet den Lieferanten'); $this->assertEquals($id, (int)$found['id'], 'ID stimmt überein'); // 4. all() enthält den Lieferanten $all = \Steuerkram\Models\Supplier::all(); $inList = false; foreach ($all as $s) { if ((int)$s['id'] === $id) { $inList = true; break; } } $this->assert($inList, 'Lieferant erscheint in Supplier::all()'); // 5. findOrCreate() gibt vorhandenen zurück $id2 = \Steuerkram\Models\Supplier::findOrCreate($name); $this->assertEquals($id, $id2, 'findOrCreate() gibt vorhandene ID zurück'); // 6. findOrCreate() legt neuen an $newName = 'Neuer Lieferant ' . uniqid(); $id3 = \Steuerkram\Models\Supplier::findOrCreate($newName); $this->assertGreaterThan(0, $id3, 'findOrCreate() legt neuen Lieferanten an'); $this->assert($id3 !== $id, 'Neue ID ist verschieden von der ersten'); // 7. update() $updatedName = 'Umbenannt ' . uniqid(); \Steuerkram\Models\Supplier::update($id, $updatedName); $updated = \Steuerkram\Models\Supplier::find($id); $this->assertEquals($updatedName, $updated['name'], 'Name nach update() korrekt geändert'); // 8. Lieferant einem Beleg zuweisen via Beleg::create() + updateMeta() $belegNr = 'TEST-SUP-' . uniqid(); $datum = date('Y-m-d'); $belegId = \Steuerkram\Models\Beleg::create([ 'beleg_nr' => $belegNr, 'filename' => 'test-lieferant.pdf', 'storage_path' => 'static/uploads/test/test-lieferant.pdf', 'mime_type' => 'application/pdf', 'file_hash' => hash('sha256', $belegNr), 'beleg_datum' => $datum, 'rechnungs_nr' => 'RE-SUP-001', 'betrag_brutto' => 59.50, 'belegtyp' => 'Eingangsrechnung', ]); \Steuerkram\Models\Beleg::updateMeta($belegId, [ 'rechnungs_nr' => 'RE-SUP-001', 'belegtyp' => 'Eingangsrechnung', 'beleg_datum' => $datum, 'betrag_brutto' => 59.50, 'supplier_id' => $id3, ]); $beleg = \Steuerkram\Models\Beleg::find($belegId); $this->assertEquals($id3, (int)$beleg['supplier_id'], 'supplier_id korrekt am Beleg gespeichert'); $this->assertNotEmpty($beleg['supplier_name'], 'supplier_name via JOIN abrufbar'); // 9. Löschen: Lieferant der noch verwendet wird kann nicht gelöscht werden $deleted = \Steuerkram\Models\Supplier::delete($id3); $this->assert(!$deleted, 'Lieferant in Verwendung kann nicht gelöscht werden'); // 10. Nicht verwendeten Lieferanten löschen $unusedName = 'Ungenutzt ' . uniqid(); $unusedId = \Steuerkram\Models\Supplier::create($unusedName); $deletedOk = \Steuerkram\Models\Supplier::delete($unusedId); $this->assert($deletedOk, 'Nicht verwendeter Lieferant kann gelöscht werden'); $this->assert(!\Steuerkram\Models\Supplier::find($unusedId), 'Gelöschter Lieferant nicht mehr auffindbar'); } }