67 lines
3.5 KiB
PHP
67 lines
3.5 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
use Steuerkram\Models\Asset;
|
||
|
||
/**
|
||
* Test 20: Anlagevermögen – CRUD und Listenfunktion.
|
||
*/
|
||
class AnlagevermoegensTest extends TestCase
|
||
{
|
||
protected string $testName = 'Test 20: Anlagevermögen (Assets)';
|
||
|
||
public function run(): void
|
||
{
|
||
// ── Anlegen ───────────────────────────────────────────────────
|
||
$id = Asset::create([
|
||
'bezeichnung' => 'Test-Laptop',
|
||
'anschaffungsdatum' => '2026-01-15',
|
||
'anschaffungskosten' => 1500.00,
|
||
'zugaenge' => 0,
|
||
'abgaenge' => 0,
|
||
'abschreibung_jahr' => 300.00,
|
||
'nutzungsdauer' => 5,
|
||
'notizen' => 'Testnotiz',
|
||
]);
|
||
$this->assertGreaterThan(0, $id, 'Asset wurde angelegt (ID > 0)');
|
||
|
||
// ── find() ────────────────────────────────────────────────────
|
||
$asset = Asset::find($id);
|
||
$this->assertNotEmpty($asset, 'Asset::find() liefert einen Datensatz');
|
||
$this->assertEquals('Test-Laptop', $asset['bezeichnung'], 'Bezeichnung korrekt');
|
||
$this->assertEquals('2026-01-15', $asset['anschaffungsdatum'], 'Anschaffungsdatum korrekt');
|
||
$this->assertEquals(1500.00, (float)$asset['anschaffungskosten'], 'Anschaffungskosten korrekt');
|
||
$this->assertEquals(300.00, (float)$asset['abschreibung_jahr'], 'Abschreibung korrekt');
|
||
$this->assertEquals(5, (int)$asset['nutzungsdauer'], 'Nutzungsdauer korrekt');
|
||
|
||
// ── Lfd. Nr. wird automatisch vergeben ───────────────────────
|
||
$this->assertGreaterThan(0, (int)$asset['lfd_nr'], 'Lfd. Nr. > 0');
|
||
|
||
// ── all() enthält das neue Asset ─────────────────────────────
|
||
$all = Asset::all();
|
||
$found = array_filter($all, fn($a) => (int)$a['id'] === $id);
|
||
$this->assert(!empty($found), 'Asset erscheint in Asset::all()');
|
||
|
||
// ── update() ──────────────────────────────────────────────────
|
||
Asset::update($id, [
|
||
'bezeichnung' => 'Test-Laptop (aktualisiert)',
|
||
'anschaffungsdatum' => '2026-01-15',
|
||
'anschaffungskosten' => 1500.00,
|
||
'zugaenge' => 200.00,
|
||
'abgaenge' => 0,
|
||
'abschreibung_jahr' => 340.00,
|
||
'nutzungsdauer' => 5,
|
||
'notizen' => '',
|
||
]);
|
||
$updated = Asset::find($id);
|
||
$this->assertEquals('Test-Laptop (aktualisiert)', $updated['bezeichnung'], 'Bezeichnung nach Update korrekt');
|
||
$this->assertEquals(200.00, (float)$updated['zugaenge'], 'Zugänge nach Update korrekt');
|
||
$this->assertEquals(340.00, (float)$updated['abschreibung_jahr'], 'Abschreibung nach Update korrekt');
|
||
|
||
// ── delete() ──────────────────────────────────────────────────
|
||
$deleted = Asset::delete($id);
|
||
$this->assert($deleted, 'Asset::delete() gibt true zurück');
|
||
$this->assert(Asset::find($id) === false, 'Gelöschtes Asset nicht mehr auffindbar');
|
||
}
|
||
}
|