API updadte

This commit is contained in:
2025-11-08 23:44:33 +01:00
parent 81374cc659
commit 5835eb15ed
29 changed files with 4066 additions and 54 deletions

View File

@@ -0,0 +1,160 @@
<?php
namespace App\Tests\Entity;
use App\Entity\Bundesland;
use App\Entity\Immobilie;
use App\Entity\User;
use App\Enum\ImmobilienTyp;
use PHPUnit\Framework\TestCase;
class ImmobilieTest extends TestCase
{
private User $verwalter;
protected function setUp(): void
{
$this->verwalter = new User();
$this->verwalter->setName('Test Verwalter');
$this->verwalter->setEmail('verwalter@example.com');
}
public function testImmobilieCreation(): void
{
$immobilie = new Immobilie();
$immobilie->setVerwalter($this->verwalter);
$immobilie->setAdresse('Teststraße 123, 12345 Teststadt');
$immobilie->setWohnflaeche(100);
$immobilie->setNutzflaeche(20);
$immobilie->setZimmer(4);
$immobilie->setTyp(ImmobilienTyp::WOHNUNG);
$this->assertEquals('Teststraße 123, 12345 Teststadt', $immobilie->getAdresse());
$this->assertEquals(100, $immobilie->getWohnflaeche());
$this->assertEquals(20, $immobilie->getNutzflaeche());
$this->assertEquals(4, $immobilie->getZimmer());
$this->assertEquals(ImmobilienTyp::WOHNUNG, $immobilie->getTyp());
$this->assertEquals($this->verwalter, $immobilie->getVerwalter());
}
public function testGesamtflaecheCalculation(): void
{
$immobilie = new Immobilie();
$immobilie->setVerwalter($this->verwalter);
$immobilie->setAdresse('Test');
$immobilie->setWohnflaeche(85);
$immobilie->setNutzflaeche(15);
$immobilie->setZimmer(3);
$this->assertEquals(100, $immobilie->getGesamtflaeche());
}
public function testKaufnebenkostenWithoutBundesland(): void
{
$immobilie = new Immobilie();
$immobilie->setVerwalter($this->verwalter);
$immobilie->setAdresse('Test');
$immobilie->setWohnflaeche(100);
$immobilie->setNutzflaeche(0);
$immobilie->setZimmer(3);
$immobilie->setKaufpreis(300000);
$kosten = $immobilie->getKaufnebenkosten();
$this->assertEquals(0, $kosten['notar']);
$this->assertEquals(0, $kosten['grundbuch']);
$this->assertEquals(0, $kosten['grunderwerbsteuer']);
$this->assertEquals(0, $kosten['gesamt']);
}
public function testKaufnebenkostenWithBundesland(): void
{
$bundesland = new Bundesland();
$bundesland->setName('Bayern');
$bundesland->setGrunderwerbsteuer(3.5);
$immobilie = new Immobilie();
$immobilie->setVerwalter($this->verwalter);
$immobilie->setAdresse('Test');
$immobilie->setWohnflaeche(100);
$immobilie->setNutzflaeche(0);
$immobilie->setZimmer(3);
$immobilie->setKaufpreis(300000);
$immobilie->setBundesland($bundesland);
$kosten = $immobilie->getKaufnebenkosten();
// Notar: 1.5% von 300000 = 4500
$this->assertEquals(4500, $kosten['notar']);
// Grundbuch: 0.5% von 300000 = 1500
$this->assertEquals(1500, $kosten['grundbuch']);
// Grunderwerbsteuer: 3.5% von 300000 = 10500
$this->assertEqualsWithDelta(10500, $kosten['grunderwerbsteuer'], 0.01);
// Gesamt: 4500 + 1500 + 10500 = 16500
$this->assertEquals(16500, $kosten['gesamt']);
}
public function testKaufnebenkostenWithDifferentBundesland(): void
{
$bundesland = new Bundesland();
$bundesland->setName('Nordrhein-Westfalen');
$bundesland->setGrunderwerbsteuer(6.5);
$immobilie = new Immobilie();
$immobilie->setVerwalter($this->verwalter);
$immobilie->setAdresse('Test');
$immobilie->setWohnflaeche(100);
$immobilie->setNutzflaeche(0);
$immobilie->setZimmer(3);
$immobilie->setKaufpreis(400000);
$immobilie->setBundesland($bundesland);
$kosten = $immobilie->getKaufnebenkosten();
// Notar: 1.5% von 400000 = 6000
$this->assertEquals(6000, $kosten['notar']);
// Grundbuch: 0.5% von 400000 = 2000
$this->assertEquals(2000, $kosten['grundbuch']);
// Grunderwerbsteuer: 6.5% von 400000 = 26000
$this->assertEquals(26000, $kosten['grunderwerbsteuer']);
// Gesamt: 6000 + 2000 + 26000 = 34000
$this->assertEquals(34000, $kosten['gesamt']);
}
public function testDefaultValues(): void
{
$immobilie = new Immobilie();
$this->assertEquals(ImmobilienTyp::WOHNUNG, $immobilie->getTyp());
$this->assertEquals(0, $immobilie->getNutzflaeche());
$this->assertFalse($immobilie->getGarage());
$this->assertNotNull($immobilie->getCreatedAt());
$this->assertNotNull($immobilie->getUpdatedAt());
}
public function testOptionalFields(): void
{
$immobilie = new Immobilie();
$immobilie->setVerwalter($this->verwalter);
$immobilie->setAdresse('Test');
$immobilie->setWohnflaeche(100);
$immobilie->setNutzflaeche(0);
$immobilie->setZimmer(3);
$immobilie->setBaujahr(2020);
$immobilie->setEtage(3);
$immobilie->setAbschreibungszeit(50);
$immobilie->setBeschreibung('Schöne Wohnung');
$this->assertEquals(2020, $immobilie->getBaujahr());
$this->assertEquals(3, $immobilie->getEtage());
$this->assertEquals(50, $immobilie->getAbschreibungszeit());
$this->assertEquals('Schöne Wohnung', $immobilie->getBeschreibung());
}
}