Added draft for Identity and Names

This commit is contained in:
Kevin Frantz 2018-11-10 17:25:48 +01:00
parent a06422a1c4
commit 7a6a5e1bcf
15 changed files with 129 additions and 15 deletions

View File

@ -0,0 +1,8 @@
<?php
namespace App\Entity\Source\Combination;
use App\Entity\Source\AbstractSource;
abstract class AbstractCombinationSource extends AbstractSource implements CombinationSourceInterface
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace App\Entity\Source\Combination;
use App\Entity\Source\Data\DataSourceInterface;
interface CombinationSourceInterface extends DataSourceInterface
{
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Entity\Source\Combination;
use App\Entity\Source\Data\Name\FirstNameSourceInterface;
use App\Entity\Source\Data\Name\SurnameSourceInterface;
/**
* @todo Maybe a middle name would be helpfull in the future ;)
* @author kevinfrantz
*
*/
interface FullPersonNameSourceInterface extends CombinationSourceInterface
{
public function getFirstName():FirstNameSourceInterface;
public function setFirstName(FirstNameSourceInterface $name):void;
public function getSurname():SurnameSourceInterface;
public function setSurname(SurnameSourceInterface $name):void;
}

View File

@ -0,0 +1,8 @@
<?php
namespace App\Entity\Source\Data;
use App\Entity\Attribut\NameAttributInterface;
interface IdentityInterface extends DataSourceInterface, NameAttributInterface
{
}

View File

@ -0,0 +1,8 @@
<?php
namespace App\Entity\Source\Data;
class IdentitySource extends AbstractDataSource implements IdentityInterface
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace App\Entity\Source\Data\Name;
use App\Entity\Source\Data\AbstractDataSource;
class AbstractNameSource extends AbstractDataSource implements NameSourceInterface
{
}

View File

@ -0,0 +1,7 @@
<?php
namespace App\Entity\Source\Data\Name;
interface FirstNameSourceInterface extends NameSourceInterface
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace App\Entity\Source\Data\Name;
use App\Entity\Source\Data\DataSourceInterface;
use App\Entity\Attribut\NameAttributInterface;
interface NameSourceInterface extends DataSourceInterface, NameAttributInterface
{
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Entity\Source\Data;
namespace App\Entity\Source\Data\Name;
use App\Entity\Attribut\NameAttribut;
use Doctrine\ORM\Mapping as ORM;
@ -11,14 +11,14 @@ use Symfony\Component\Validator\Constraints as Assert;
* @ORM\Table(name="source_data_name")
* @ORM\Entity(repositoryClass="App\Repository\NameSourceRepository")
*/
final class NameSource extends AbstractDataSource implements NameSourceInterface
final class NicknameSource extends AbstractNameSource implements NicknameSourceInterface
{
use NameAttribut;
/**
* @todo Implement an extra assert Layer!
* @ORM\Column(type="string",length=255)
* @Assert\NotBlank()
*
* @var string
*/
protected $name;

View File

@ -0,0 +1,10 @@
<?php
namespace App\Entity\Source\Data\Name;
/**
* @author kevinfrantz
*/
interface NicknameSourceInterface extends NameSourceInterface
{
}

View File

@ -0,0 +1,7 @@
<?php
namespace App\Entity\Source\Data\Name;
interface SurnameSourceInterface extends NameSourceInterface
{
}

View File

@ -1,12 +0,0 @@
<?php
namespace App\Entity\Source\Data;
use App\Entity\Attribut\NameAttributInterface;
/**
* @author kevinfrantz
*/
interface NameSourceInterface extends NameAttributInterface, DataSourceInterface
{
}

View File

@ -0,0 +1,30 @@
<?php
namespace tests\unit\Entity\Source\Data;
use PHPUnit\Framework\TestCase;
use App\Entity\Source\Data\IdentityInterface;
use App\Entity\Source\Data\IdentitySource;
use App\Entity\Source\Data\FullPersonNameSourceInterface;
class IdentitySourceTest extends TestCase
{
/**
* @var IdentityInterface
*/
protected $identity;
public function setUp():void{
$this->identity = new IdentitySource();
}
public function testConstructor():void{
$this->assertInstanceOf(FullPersonNameSourceInterface::class, $this->identity->getName());
}
public function testName():void{
$name = $this->createMock(FullPersonNameSourceInterface::class);
$this->assertNull($this->identity->setName($name));
$this->assertEquals($name, $this->identity->getName());
}
}