Skip to content

Commit

Permalink
bessere Testbarkeit
Browse files Browse the repository at this point in the history
  • Loading branch information
alexmpunkt committed Jan 30, 2017
1 parent 8d23193 commit 3f9098c
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 29 deletions.
40 changes: 12 additions & 28 deletions src/Person/Beziehung/Gegenbeziehung.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,8 @@

namespace Demv\Werte\Person\Beziehung;

use Demv\Werte\Person\Beziehung\Beruflich\Arbeitgeber;
use Demv\Werte\Person\Beziehung\Beruflich\Arbeitnehmer;
use Demv\Werte\Person\Beziehung\Beruflich\FirmaVon;
use Demv\Werte\Person\Beziehung\Beruflich\Geschaeftsfuehrer;
use Demv\Werte\Person\Beziehung\Familiaer\Eltern;
use Demv\Werte\Person\Beziehung\Familiaer\Enkel;
use Demv\Werte\Person\Beziehung\Familiaer\Geschwister;
use Demv\Werte\Person\Beziehung\Familiaer\Grosseltern;
use Demv\Werte\Person\Beziehung\Familiaer\Kind;
use Demv\Werte\Person\Beziehung\Familiaer\Partner;
use Demv\Werte\Person\Beziehung\Familiaer\Schwager;
use Demv\Werte\Exception\EntryNotFoundException;

use Exception;

/**
Expand All @@ -27,32 +18,25 @@
*/
final class Gegenbeziehung
{
/**
* @var array
*/
private $pairs = [];

public function __construct()
{
$this->appendPair(Partner::ID, Partner::ID);
$this->appendPair(Eltern::ID, Kind::ID);
$this->appendPair(Arbeitgeber::ID, Arbeitnehmer::ID);
$this->appendPair(Geschaeftsfuehrer::ID, FirmaVon::ID);
$this->appendPair(Geschwister::ID, Geschwister::ID);
$this->appendPair(Schwager::ID, Schwager::ID);
$this->appendPair(Grosseltern::ID, Enkel::ID);
}

/**
* @param int $firstId
* @param int $secondId
* Gegenbeziehung constructor.
*
* @param array $pairs
*/
private function appendPair(int $firstId, int $secondId)
public function __construct(array $pairs)
{
$this->pairs[$firstId] = $secondId;
$this->pairs = $pairs;
}

/**
* @param BeziehungsTypInterface $beziehungsTyp
*
* @return mixed
* @return BeziehungsTypInterface
* @throws Exception
*/
public function getFor(BeziehungsTypInterface $beziehungsTyp): BeziehungsTypInterface
Expand All @@ -67,7 +51,7 @@ public function getFor(BeziehungsTypInterface $beziehungsTyp): BeziehungsTypInte
}
}

throw new Exception(sprintf('Für die Beziehung %s existiert keine Gegenbeziehung', $beziehungsTyp->getName()));
throw new EntryNotFoundException('Gegenbeziehung', $beziehungsTyp->getId());
}

/**
Expand Down
50 changes: 50 additions & 0 deletions src/Person/Beziehung/GegenbeziehungFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php
/**
* Created by PhpStorm.
* User: alex
* Date: 30.01.17
* Time: 09:39
*/

namespace Demv\Werte\Person\Beziehung;

use Demv\Werte\Person\Beziehung\Beruflich\Arbeitgeber;
use Demv\Werte\Person\Beziehung\Beruflich\Arbeitnehmer;
use Demv\Werte\Person\Beziehung\Beruflich\FirmaVon;
use Demv\Werte\Person\Beziehung\Beruflich\Geschaeftsfuehrer;
use Demv\Werte\Person\Beziehung\Familiaer\Eltern;
use Demv\Werte\Person\Beziehung\Familiaer\Enkel;
use Demv\Werte\Person\Beziehung\Familiaer\Geschwister;
use Demv\Werte\Person\Beziehung\Familiaer\Grosseltern;
use Demv\Werte\Person\Beziehung\Familiaer\Kind;
use Demv\Werte\Person\Beziehung\Familiaer\Partner;
use Demv\Werte\Person\Beziehung\Familiaer\Schwager;

final class GegenbeziehungFactory
{
/**
* @return Gegenbeziehung
*/
public static function create(): Gegenbeziehung
{
return new Gegenbeziehung(self::getPairs());
}

/**
* @return array
*/
private static function getPairs(): array
{
$pairs = [];
$pairs[Partner::ID] = Partner::ID;
$pairs[Eltern::ID] = Kind::ID;
$pairs[Arbeitgeber::ID] = Arbeitnehmer::ID;
$pairs[Geschaeftsfuehrer::ID] = FirmaVon::ID;
$pairs[Geschwister::ID] = Geschwister::ID;
$pairs[Schwager::ID] = Schwager::ID;
$pairs[Grosseltern::ID] = Enkel::ID;

return $pairs;
}

}
23 changes: 23 additions & 0 deletions tests/Person/Beziehung/GegenbeziehungFactoryTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php
/**
* Created by PhpStorm.
* User: alex
* Date: 30.01.17
* Time: 09:43
*/

namespace Demv\Werte\Tests\Person\Beziehung;

use Demv\Werte\Person\Beziehung\Gegenbeziehung;
use Demv\Werte\Person\Beziehung\GegenbeziehungFactory;
use PHPUnit\Framework\TestCase;

class GegenbeziehungFactoryTest extends TestCase
{

public function testCreate()
{
$this->assertInstanceOf(Gegenbeziehung::class, GegenbeziehungFactory::create());
}

}
11 changes: 10 additions & 1 deletion tests/Person/Beziehung/GegenbeziehungTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

namespace Demv\Werte\Tests\Person\Beziehung;

use Demv\Werte\Exception\EntryNotFoundException;
use Demv\Werte\Person\Beziehung\Beruflich\Arbeitgeber;
use Demv\Werte\Person\Beziehung\Beruflich\Arbeitnehmer;
use Demv\Werte\Person\Beziehung\Beruflich\FirmaVon;
Expand All @@ -20,6 +21,7 @@
use Demv\Werte\Person\Beziehung\Familiaer\Partner;
use Demv\Werte\Person\Beziehung\Familiaer\Schwager;
use Demv\Werte\Person\Beziehung\Gegenbeziehung;
use Demv\Werte\Person\Beziehung\GegenbeziehungFactory;
use PHPUnit_Framework_TestCase;

class GegenbeziehungTest extends PHPUnit_Framework_TestCase
Expand All @@ -29,7 +31,7 @@ class GegenbeziehungTest extends PHPUnit_Framework_TestCase
*/
private function getGegenbziehung()
{
return new Gegenbeziehung();
return GegenbeziehungFactory::create();
}

/**
Expand Down Expand Up @@ -92,4 +94,11 @@ public function testFirmaVon()
$this->checkExistence(new FirmaVon(), new Geschaeftsfuehrer());
}

public function testMissing()
{
$this->expectException(EntryNotFoundException::class);
$gegenbeziehung = new Gegenbeziehung([]);
$gegenbeziehung->getFor(new Partner());
}

}

0 comments on commit 3f9098c

Please sign in to comment.