Optimized MVC and implemented function tests for format

This commit is contained in:
Kevin Frantz 2019-03-29 17:53:06 +01:00
parent 522ba1994e
commit 94b84527a8
9 changed files with 92 additions and 10 deletions

View File

@ -6,6 +6,8 @@ use Infinito\Entity\Meta\Relation\RelationInterface;
/** /**
* @author kevinfrantz * @author kevinfrantz
*
* @see RelationAttributInterface
*/ */
trait RelationAttribut trait RelationAttribut
{ {
@ -14,11 +16,21 @@ trait RelationAttribut
*/ */
protected $relation; protected $relation;
/**
* @param RelationInterface $relation
*
* @see RelationAttributInterface
*/
public function setRelation(RelationInterface $relation): void public function setRelation(RelationInterface $relation): void
{ {
$this->relation = $relation; $this->relation = $relation;
} }
/**
* @see RelationAttributInterface
*
* @return RelationInterface
*/
public function getRelation(): RelationInterface public function getRelation(): RelationInterface
{ {
return $this->relation; return $this->relation;

View File

@ -9,7 +9,13 @@ use Infinito\Entity\Meta\Relation\RelationInterface;
*/ */
interface RelationAttributInterface interface RelationAttributInterface
{ {
/**
* @param RelationInterface $relation
*/
public function setRelation(RelationInterface $relation): void; public function setRelation(RelationInterface $relation): void;
/**
* @return RelationInterface
*/
public function getRelation(): RelationInterface; public function getRelation(): RelationInterface;
} }

View File

@ -11,14 +11,29 @@ use Fresh\DoctrineEnumBundle\DBAL\Types\AbstractEnumType;
*/ */
final class LayerType extends AbstractEnumType final class LayerType extends AbstractEnumType
{ {
/**
* @var string
*/
public const HEREDITY = 'heredity'; public const HEREDITY = 'heredity';
/**
* @var string
*/
public const RIGHT = 'right'; public const RIGHT = 'right';
/**
* @var string
*/
public const SOURCE = 'source'; public const SOURCE = 'source';
/**
* @var string
*/
public const LAW = 'law'; public const LAW = 'law';
/**
* @var string
*/
public const MEMBER = 'member'; public const MEMBER = 'member';
const CREATOR = 'creator'; const CREATOR = 'creator';

View File

@ -44,8 +44,10 @@ final class MVCRoutineService implements MVCRoutineServiceInterface
*/ */
public function process(): View public function process(): View
{ {
$this->processService->process(); $data = $this->processService->process();
$view = $this->viewBuilder->getView();
$view->setData($data);
return $this->viewBuilder->getView(); return $view;
} }
} }

View File

@ -70,7 +70,7 @@ final class ProcessService implements ProcessServiceInterface
* *
* @see \Infinito\Domain\ProcessManagement\ProcessServiceInterface::process() * @see \Infinito\Domain\ProcessManagement\ProcessServiceInterface::process()
*/ */
public function process(): void public function process()
{ {
if ($this->requestedActionService->hasRequestedEntity() && $this->requestedActionService->getRequestedEntity()->hasIdentity()) { if ($this->requestedActionService->hasRequestedEntity() && $this->requestedActionService->getRequestedEntity()->hasIdentity()) {
// READ VIEW // READ VIEW
@ -95,5 +95,7 @@ final class ProcessService implements ProcessServiceInterface
->createView(); ->createView();
$this->actionTemplateDataStore->setData(ActionType::CREATE, $updateForm); $this->actionTemplateDataStore->setData(ActionType::CREATE, $updateForm);
} }
return $this->actionTemplateDataStore;
} }
} }

View File

@ -7,5 +7,8 @@ namespace Infinito\Domain\ProcessManagement;
*/ */
interface ProcessServiceInterface interface ProcessServiceInterface
{ {
public function process(): void; /**
* @todo specify return type
*/
public function process();
} }

View File

@ -10,21 +10,18 @@ use Infinito\Logic\Operation\OperationInterface;
use Infinito\Attribut\ConditionAttribut; use Infinito\Attribut\ConditionAttribut;
use Infinito\Attribut\RecieverAttribut; use Infinito\Attribut\RecieverAttribut;
use Infinito\Attribut\LayerAttribut; use Infinito\Attribut\LayerAttribut;
use Infinito\Attribut\RelationAttribut;
use Infinito\Attribut\PriorityAttribut; use Infinito\Attribut\PriorityAttribut;
use Infinito\Entity\Source\SourceInterface; use Infinito\Entity\Source\SourceInterface;
use Infinito\Attribut\ActionTypeAttribut; use Infinito\Attribut\ActionTypeAttribut;
/** /**
* @todo Remove relation attribut!
*
* @author kevinfrantz * @author kevinfrantz
* @ORM\Table(name="meta_right") * @ORM\Table(name="meta_right")
* @ORM\Entity(repositoryClass="Infinito\Repository\Meta\RightRepository") * @ORM\Entity(repositoryClass="Infinito\Repository\Meta\RightRepository")
*/ */
class Right extends AbstractMeta implements RightInterface class Right extends AbstractMeta implements RightInterface
{ {
use ActionTypeAttribut,LawAttribut, RelationAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut; use ActionTypeAttribut,LawAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut;
/** /**
* @ORM\OneToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist", "remove"}) * @ORM\OneToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist", "remove"})

View File

@ -7,13 +7,12 @@ use Infinito\Attribut\RecieverAttributInterface;
use Infinito\Attribut\GrantAttributInterface; use Infinito\Attribut\GrantAttributInterface;
use Infinito\Attribut\ConditionAttributInterface; use Infinito\Attribut\ConditionAttributInterface;
use Infinito\Attribut\LayerAttributInterface; use Infinito\Attribut\LayerAttributInterface;
use Infinito\Attribut\RelationAttributInterface;
use Infinito\Attribut\PriorityAttributInterface; use Infinito\Attribut\PriorityAttributInterface;
use Infinito\Attribut\ActionTypeAttributInterface; use Infinito\Attribut\ActionTypeAttributInterface;
/** /**
* @author kevinfrantz * @author kevinfrantz
*/ */
interface RightInterface extends ActionTypeAttributInterface, LawAttributInterface, GrantAttributInterface, RecieverAttributInterface, RelationAttributInterface, ConditionAttributInterface, LayerAttributInterface, MetaInterface, PriorityAttributInterface interface RightInterface extends ActionTypeAttributInterface, LawAttributInterface, GrantAttributInterface, RecieverAttributInterface, ConditionAttributInterface, LayerAttributInterface, MetaInterface, PriorityAttributInterface
{ {
} }

View File

@ -0,0 +1,46 @@
<?php
namespace Tests\Functional;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
* @author kevinfrantz
*/
class FormatFunctionTest extends WebTestCase
{
public function testHomepage(): void
{
$client = static::createClient();
$client->request(Request::METHOD_GET, 'api/rest/source/HOMEPAGE');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$this->assertContains('<html', $client->getResponse()->getContent());
}
public function testHomepageWithHTML(): void
{
$client = static::createClient();
$client->request(Request::METHOD_GET, 'api/rest/source/HOMEPAGE.html');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$this->assertContains('<html', $client->getResponse()->getContent());
}
public function testHomepageWithJSON(): void
{
$client = static::createClient();
$client->request(Request::METHOD_GET, 'api/rest/source/HOMEPAGE.json');
echo $client->getResponse()->getContent();
$this->assertEquals(200, $client->getResponse()->getStatusCode());
// $this->assertContains('<html', $client->getResponse()->getContent());
}
public function testHomepageWithXML(): void
{
$client = static::createClient();
$client->request(Request::METHOD_GET, 'api/rest/source/HOMEPAGE.xml');
echo $client->getResponse()->getContent();
$this->assertEquals(200, $client->getResponse()->getStatusCode());
// $this->assertContains('<html', $client->getResponse()->getContent());
}
}