mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-01-09 14:07:25 +01:00
Implemenented version attribt, repository and tests for right entity
This commit is contained in:
parent
89530fd6e0
commit
ed41dd6bf8
21
application/src/Entity/Attribut/PriorityAttribut.php
Normal file
21
application/src/Entity/Attribut/PriorityAttribut.php
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity\Attribut;
|
||||||
|
|
||||||
|
trait PriorityAttribut
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
protected $priority;
|
||||||
|
|
||||||
|
public function setPriority(int $priority): void
|
||||||
|
{
|
||||||
|
$this->priority = $priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPriority(): int
|
||||||
|
{
|
||||||
|
return $this->priority;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity\Attribut;
|
||||||
|
|
||||||
|
interface PriorityAttributInterface
|
||||||
|
{
|
||||||
|
public function setPriority(int $priority): void;
|
||||||
|
|
||||||
|
public function getPriority(): int;
|
||||||
|
}
|
@ -21,7 +21,7 @@ class Reciever extends AbstractMeta implements RecieverInterface
|
|||||||
* The right which the reciever group belongs to.
|
* The right which the reciever group belongs to.
|
||||||
*
|
*
|
||||||
* @ORM\OneToOne(targetEntity="Right",cascade={"persist", "remove"})
|
* @ORM\OneToOne(targetEntity="Right",cascade={"persist", "remove"})
|
||||||
* @ORM\JoinColumn(name="right_id", referencedColumnName="id")
|
* @ORM\JoinColumn(name="right_id", referencedColumnName="id",onDelete="CASCADE")
|
||||||
*
|
*
|
||||||
* @var RightInterface
|
* @var RightInterface
|
||||||
*/
|
*/
|
||||||
|
@ -14,6 +14,7 @@ use App\Entity\Attribut\ConditionAttribut;
|
|||||||
use App\Entity\Attribut\RecieverAttribut;
|
use App\Entity\Attribut\RecieverAttribut;
|
||||||
use App\Entity\Attribut\LayerAttribut;
|
use App\Entity\Attribut\LayerAttribut;
|
||||||
use App\Entity\Attribut\RelationAttribut;
|
use App\Entity\Attribut\RelationAttribut;
|
||||||
|
use App\Entity\Attribut\PriorityAttribut;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
@ -22,7 +23,14 @@ use App\Entity\Attribut\RelationAttribut;
|
|||||||
*/
|
*/
|
||||||
class Right extends AbstractMeta implements RightInterface
|
class Right extends AbstractMeta implements RightInterface
|
||||||
{
|
{
|
||||||
use TypeAttribut,LawAttribut, RelationAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut;
|
use TypeAttribut,LawAttribut, RelationAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="integer")
|
||||||
|
*
|
||||||
|
* @var int which priority has the right in a roleset
|
||||||
|
*/
|
||||||
|
protected $priority;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\ManyToOne(targetEntity="Law", inversedBy="rights")
|
* @ORM\ManyToOne(targetEntity="Law", inversedBy="rights")
|
||||||
@ -42,7 +50,7 @@ class Right extends AbstractMeta implements RightInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\OneToOne(targetEntity="Reciever",cascade={"persist", "remove"})
|
* @ORM\OneToOne(targetEntity="Reciever",cascade={"persist", "remove"})
|
||||||
* @ORM\JoinColumn(name="reciever_id", referencedColumnName="id")
|
* @ORM\JoinColumn(name="reciever_id", referencedColumnName="id",onDelete="CASCADE")
|
||||||
*
|
*
|
||||||
* @var RecieverInterface
|
* @var RecieverInterface
|
||||||
*/
|
*/
|
||||||
@ -75,6 +83,7 @@ class Right extends AbstractMeta implements RightInterface
|
|||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->grant = true;
|
$this->grant = true;
|
||||||
|
$this->priority = 0;
|
||||||
$this->reciever = new Reciever();
|
$this->reciever = new Reciever();
|
||||||
$this->reciever->setRight($this);
|
$this->reciever->setRight($this);
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,11 @@ use App\Entity\Attribut\GrantAttributInterface;
|
|||||||
use App\Entity\Attribut\ConditionAttributInterface;
|
use App\Entity\Attribut\ConditionAttributInterface;
|
||||||
use App\Entity\Attribut\LayerAttributInterface;
|
use App\Entity\Attribut\LayerAttributInterface;
|
||||||
use App\Entity\Attribut\RelationAttributInterface;
|
use App\Entity\Attribut\RelationAttributInterface;
|
||||||
|
use App\Entity\Attribut\PriorityAttributInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
interface RightInterface extends TypeAttributInterface, LawAttributInterface, GrantAttributInterface, RecieverAttributInterface, RelationAttributInterface, ConditionAttributInterface, LayerAttributInterface, MetaInterface
|
interface RightInterface extends TypeAttributInterface, LawAttributInterface, GrantAttributInterface, RecieverAttributInterface, RelationAttributInterface, ConditionAttributInterface, LayerAttributInterface, MetaInterface, PriorityAttributInterface
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
12
application/src/Repository/RightRepository.php
Normal file
12
application/src/Repository/RightRepository.php
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Repository;
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kevinfrantz
|
||||||
|
*/
|
||||||
|
class RightRepository extends EntityRepository
|
||||||
|
{
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Unit\Entity\Attribut;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use App\Entity\Attribut\PriorityAttributInterface;
|
||||||
|
use App\Entity\Attribut\PriorityAttribut;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kevinfrantz
|
||||||
|
*/
|
||||||
|
class PriorityAttributTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var PriorityAttributInterface
|
||||||
|
*/
|
||||||
|
protected $priorityAttribut;
|
||||||
|
|
||||||
|
public function setUp(): void
|
||||||
|
{
|
||||||
|
$this->priorityAttribut = new class() implements PriorityAttributInterface {
|
||||||
|
use PriorityAttribut;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testConstructor(): void
|
||||||
|
{
|
||||||
|
$this->expectException(\TypeError::class);
|
||||||
|
$this->priorityAttribut->getPriority();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAccessors(): void
|
||||||
|
{
|
||||||
|
$priority = 123;
|
||||||
|
$this->assertNull($this->priorityAttribut->setPriority($priority));
|
||||||
|
$this->assertEquals($priority, $this->priorityAttribut->getPriority());
|
||||||
|
}
|
||||||
|
}
|
@ -29,6 +29,7 @@ class RightTest extends TestCase
|
|||||||
{
|
{
|
||||||
$this->assertEquals($this->right, $this->right->getReciever()->getRight());
|
$this->assertEquals($this->right, $this->right->getReciever()->getRight());
|
||||||
$this->assertTrue($this->right->getGrant());
|
$this->assertTrue($this->right->getGrant());
|
||||||
|
$this->assertEquals(0, $this->right->getPriority());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testConstructorLayer(): void
|
public function testConstructorLayer(): void
|
||||||
|
100
application/tests/Unit/Repository/RightRepositoryTest.php
Normal file
100
application/tests/Unit/Repository/RightRepositoryTest.php
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace tests\Unit\Repository;
|
||||||
|
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||||
|
use Doctrine\ORM\EntityManager;
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use App\Entity\Meta\RightInterface;
|
||||||
|
use App\Entity\Meta\Right;
|
||||||
|
use App\DBAL\Types\LayerType;
|
||||||
|
use App\DBAL\Types\RightType;
|
||||||
|
use App\Entity\Meta\Law;
|
||||||
|
use App\Entity\Meta\LawInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @todo specify tests for all attributes
|
||||||
|
*
|
||||||
|
* @author kevinfrantz
|
||||||
|
*/
|
||||||
|
class RightRepositoryTest extends KernelTestCase
|
||||||
|
{
|
||||||
|
const PRIORITY = 123;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var EntityManager
|
||||||
|
*/
|
||||||
|
protected $entityManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var EntityRepository
|
||||||
|
*/
|
||||||
|
protected $rightRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var RightInterface
|
||||||
|
*/
|
||||||
|
protected $loadedRight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var RightInterface
|
||||||
|
*/
|
||||||
|
protected $right;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var LawInterface
|
||||||
|
*/
|
||||||
|
protected $law;
|
||||||
|
|
||||||
|
public function setUp(): void
|
||||||
|
{
|
||||||
|
$kernel = self::bootKernel();
|
||||||
|
$this->entityManager = $kernel->getContainer()
|
||||||
|
->get('doctrine')
|
||||||
|
->getManager();
|
||||||
|
$this->rightRepository = $this->entityManager->getRepository(Right::class);
|
||||||
|
$this->right = new Right();
|
||||||
|
$this->right->setPriority(self::PRIORITY);
|
||||||
|
$this->right->setLayer(LayerType::SOURCE);
|
||||||
|
$this->right->setType(RightType::READ);
|
||||||
|
$this->law = new Law();
|
||||||
|
$this->entityManager->persist($this->law);
|
||||||
|
$this->right->setLaw($this->law);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreation(): void
|
||||||
|
{
|
||||||
|
$this->entityManager->persist($this->right);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
$rightId = $this->right->getId();
|
||||||
|
/*
|
||||||
|
* @var RightInterface
|
||||||
|
*/
|
||||||
|
$this->loadedRight = $this->rightRepository->find($rightId);
|
||||||
|
$this->assertEquals($rightId, $this->loadedRight->getId());
|
||||||
|
$this->assertEquals(self::PRIORITY, $this->loadedRight->getPriority());
|
||||||
|
$this->deleteRight();
|
||||||
|
$this->assertNull($this->rightRepository->find($rightId));
|
||||||
|
$this->loadedRight = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function deleteRight(): void
|
||||||
|
{
|
||||||
|
$this->entityManager->remove($this->loadedRight);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
$this->entityManager->remove($this->law);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*
|
||||||
|
* @see \Symfony\Bundle\FrameworkBundle\Test\KernelTestCase::tearDown()
|
||||||
|
*/
|
||||||
|
protected function tearDown(): void
|
||||||
|
{
|
||||||
|
parent::tearDown();
|
||||||
|
$this->entityManager->close();
|
||||||
|
$this->entityManager = null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user