Optimized layer attribut

This commit is contained in:
Kevin Frantz 2019-01-16 21:47:41 +01:00
parent 6897b44aec
commit 1651ff95f7
4 changed files with 31 additions and 25 deletions

View File

@ -2,21 +2,37 @@
namespace App\Entity\Attribut; namespace App\Entity\Attribut;
use App\DBAL\Types\Meta\Right\LayerType;
use App\Exception\NoValidChoiceException;
/** /**
* @author kevinfrantz * @author kevinfrantz
*/ */
trait LayerAttribut trait LayerAttribut
{ {
/** /**
* @see LayerType
*
* @var string * @var string
*/ */
protected $layer; protected $layer;
/**
* @param string $layer
*
* @throws NoValidChoiceException
*/
public function setLayer(string $layer): void public function setLayer(string $layer): void
{ {
if (!array_key_exists($layer, LayerType::getChoices())) {
throw new NoValidChoiceException();
}
$this->layer = $layer; $this->layer = $layer;
} }
/**
* @return string
*/
public function getLayer(): string public function getLayer(): string
{ {
return $this->layer; return $this->layer;

View File

@ -6,7 +6,6 @@ use App\Entity\Attribut\CrudAttribut;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Fresh\DoctrineEnumBundle\Validator\Constraints as DoctrineAssert; use Fresh\DoctrineEnumBundle\Validator\Constraints as DoctrineAssert;
use App\Entity\Attribut\LawAttribut; use App\Entity\Attribut\LawAttribut;
use App\DBAL\Types\Meta\Right\LayerType;
use App\Entity\Attribut\GrantAttribut; use App\Entity\Attribut\GrantAttribut;
use App\Logic\Operation\OperationInterface; use App\Logic\Operation\OperationInterface;
use App\Entity\Attribut\ConditionAttribut; use App\Entity\Attribut\ConditionAttribut;
@ -15,8 +14,6 @@ use App\Entity\Attribut\LayerAttribut;
use App\Entity\Attribut\RelationAttribut; use App\Entity\Attribut\RelationAttribut;
use App\Entity\Attribut\PriorityAttribut; use App\Entity\Attribut\PriorityAttribut;
use App\Entity\Source\SourceInterface; use App\Entity\Source\SourceInterface;
use App\Exception\NoValidChoiceException;
use App\DBAL\Types\Meta\Right\CRUDType;
/** /**
* @todo Remove relation attribut! * @todo Remove relation attribut!
@ -98,17 +95,4 @@ class Right extends AbstractMeta implements RightInterface
$this->grant = true; $this->grant = true;
$this->priority = 0; $this->priority = 0;
} }
/**
* {@inheritdoc}
*
* @see \App\Entity\Attribut\LayerAttributInterface::setLayer()
*/
public function setLayer(string $layer): void
{
if (!array_key_exists($layer, LayerType::getChoices())) {
throw new NoValidChoiceException();
}
$this->layer = $layer;
}
} }

View File

@ -6,17 +6,21 @@ use PHPUnit\Framework\TestCase;
use App\Entity\Attribut\LayerAttributInterface; use App\Entity\Attribut\LayerAttributInterface;
use App\Entity\Attribut\LayerAttribut; use App\Entity\Attribut\LayerAttribut;
use App\DBAL\Types\Meta\Right\LayerType; use App\DBAL\Types\Meta\Right\LayerType;
use App\Exception\NoValidChoiceException;
/**
* @author kevinfrantz
*/
class LayerAttributTest extends TestCase class LayerAttributTest extends TestCase
{ {
/** /**
* @var LayerAttributInterface * @var LayerAttributInterface
*/ */
protected $layer; protected $layerAttribut;
public function setUp(): void public function setUp(): void
{ {
$this->layer = new class() implements LayerAttributInterface { $this->layerAttribut = new class() implements LayerAttributInterface {
use LayerAttribut; use LayerAttribut;
}; };
} }
@ -24,14 +28,16 @@ class LayerAttributTest extends TestCase
public function testConstruct(): void public function testConstruct(): void
{ {
$this->expectException(\TypeError::class); $this->expectException(\TypeError::class);
$this->layer->getLayer(); $this->layerAttribut->getLayer();
} }
public function testAccessors(): void public function testAccessors(): void
{ {
foreach (LayerType::getChoices() as $value) { foreach (LayerType::getChoices() as $enum) {
$this->assertNull($this->layer->setLayer($value)); $this->assertNull($this->layerAttribut->setLayer($enum));
$this->assertEquals($value, $this->layer->getLayer()); $this->assertEquals($enum, $this->layerAttribut->getLayer());
} }
$this->expectException(NoValidChoiceException::class);
$this->layerAttribut->setLayer('NoneValidLayer');
} }
} }

View File

@ -83,9 +83,9 @@ class RightTest extends TestCase
public function testLayer(): void public function testLayer(): void
{ {
foreach (LayerType::getChoices() as $key => $value) { foreach (LayerType::getChoices() as $choice) {
$this->assertNull($this->right->setLayer($key)); $this->assertNull($this->right->setLayer($choice));
$this->assertEquals($key, $this->right->getLayer()); $this->assertEquals($choice, $this->right->getLayer());
} }
$this->expectException(NoValidChoiceException::class); $this->expectException(NoValidChoiceException::class);
$this->right->setLayer('NoneValidLayer'); $this->right->setLayer('NoneValidLayer');