mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-04 03:07:58 +00:00 
			
		
		
		
	Implemented injection of RequestedEntityService to RequestedRightService
This commit is contained in:
		@@ -28,6 +28,14 @@ abstract class AbstractAction extends AbstractActionConstructor implements Actio
 | 
			
		||||
     */
 | 
			
		||||
    abstract protected function proccess();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This function can be implemented in the child classes for preparation.
 | 
			
		||||
     */
 | 
			
		||||
    protected function prepare(): void
 | 
			
		||||
    {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws \Exception
 | 
			
		||||
     *
 | 
			
		||||
@@ -37,6 +45,7 @@ abstract class AbstractAction extends AbstractActionConstructor implements Actio
 | 
			
		||||
     */
 | 
			
		||||
    final public function execute()
 | 
			
		||||
    {
 | 
			
		||||
        $this->prepare();
 | 
			
		||||
        if ($this->isSecure()) {
 | 
			
		||||
            if ($this->isValid()) {
 | 
			
		||||
                return $this->proccess();
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ namespace App\Domain\ActionManagement\Create;
 | 
			
		||||
use App\Domain\SourceManagement\SourceClassInformationService;
 | 
			
		||||
use App\Form\Source\SourceType;
 | 
			
		||||
use App\Entity\Source\AbstractSource;
 | 
			
		||||
use Symfony\Component\Form\Form;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author kevinfrantz
 | 
			
		||||
@@ -23,15 +24,36 @@ final class CreateSourceAction extends AbstractCreateAction
 | 
			
		||||
     */
 | 
			
		||||
    private $sourceClass;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Form
 | 
			
		||||
     */
 | 
			
		||||
    private $form;
 | 
			
		||||
 | 
			
		||||
    private function setSourceClass(): void
 | 
			
		||||
    {
 | 
			
		||||
        $request = $this->actionService->getRequest();
 | 
			
		||||
        $this->sourceClass = $request->get(SourceType::CLASS_PARAMETER_NAME, self::DEFAULT_CLASS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function prepare(): void
 | 
			
		||||
    private function setFormClass(): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->form = $this->actionService->getCurrentFormBuilder()->getForm();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function handleRequest(): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->form->handleRequest($this->actionService->getRequest());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * {@inheritdoc}
 | 
			
		||||
     *
 | 
			
		||||
     * @see \App\Domain\ActionManagement\AbstractAction::prepare()
 | 
			
		||||
     */
 | 
			
		||||
    protected function prepare(): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->setSourceClass();
 | 
			
		||||
        $this->setFormClass();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -41,7 +63,7 @@ final class CreateSourceAction extends AbstractCreateAction
 | 
			
		||||
     */
 | 
			
		||||
    protected function isValid(): bool
 | 
			
		||||
    {
 | 
			
		||||
        return $this->actionService->getCurrentFormBuilder()->getForm()->isValid();
 | 
			
		||||
        return $this->form->isValid();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
		 Before Width: | Height: | Size: 296 KiB After Width: | Height: | Size: 297 KiB  | 
@@ -11,6 +11,7 @@ use App\Domain\RequestManagement\Entity\RequestedEntityInterface;
 | 
			
		||||
use App\Attribut\RequestedEntityAttribut;
 | 
			
		||||
use App\Entity\Meta\MetaInterface;
 | 
			
		||||
use App\Exception\NotCorrectInstanceException;
 | 
			
		||||
use App\Domain\RequestManagement\Entity\RequestedEntity;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author kevinfrantz
 | 
			
		||||
@@ -56,6 +57,16 @@ class RequestedRight implements RequestedRightInterface
 | 
			
		||||
        throw new PreconditionFailedException(get_class($this->requestedEntity).' needs to have a defined attribut id or slug!');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param RequestedEntity|null $requestedEntity
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(?RequestedEntity $requestedEntity = null)
 | 
			
		||||
    {
 | 
			
		||||
        if ($requestedEntity) {
 | 
			
		||||
            $this->setRequestedEntity($requestedEntity);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Uses some kind of Lazy loading.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,8 @@
 | 
			
		||||
 | 
			
		||||
namespace App\Domain\RequestManagement\Right;
 | 
			
		||||
 | 
			
		||||
use App\Domain\RequestManagement\Entity\RequestedEntityServiceInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Allows to use a right as a Service.
 | 
			
		||||
 *
 | 
			
		||||
@@ -9,4 +11,11 @@ namespace App\Domain\RequestManagement\Right;
 | 
			
		||||
 */
 | 
			
		||||
final class RequestedRightService extends RequestedRight implements RequestedRightServiceInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @param RequestedEntityServiceInterface $requestedEntityService
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(RequestedEntityServiceInterface $requestedEntityService)
 | 
			
		||||
    {
 | 
			
		||||
        parent::__construct($requestedEntityService);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,10 @@ use App\DBAL\Types\ActionType;
 | 
			
		||||
use App\Domain\RequestManagement\User\RequestedUserService;
 | 
			
		||||
use App\Domain\UserManagement\UserSourceDirectorService;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
use App\Domain\FormManagement\RequestedActionFormBuilderServiceInterface;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use App\Domain\FormManagement\RequestedActionFormBuilderService;
 | 
			
		||||
use App\Domain\FormManagement\FormClassNameService;
 | 
			
		||||
use App\Domain\RequestManagement\Entity\RequestedEntityService;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @todo Implement test and logic!!!!!
 | 
			
		||||
@@ -42,20 +45,30 @@ class CreateSourceActionIntegrationTest extends KernelTestCase
 | 
			
		||||
     */
 | 
			
		||||
    private $requestedActionService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Request
 | 
			
		||||
     */
 | 
			
		||||
    private $request;
 | 
			
		||||
 | 
			
		||||
    public function setUp(): void
 | 
			
		||||
    {
 | 
			
		||||
        self::bootKernel();
 | 
			
		||||
        $formFactory = self::$container->get('form.factory');
 | 
			
		||||
        $entityManager = static::$kernel->getContainer()
 | 
			
		||||
            ->get('doctrine')
 | 
			
		||||
            ->getManager();
 | 
			
		||||
        $security = $this->createMock(Security::class);
 | 
			
		||||
        $userSourceDirectorService = new UserSourceDirectorService($entityManager, $security);
 | 
			
		||||
        $requestedRightService = new RequestedRightService();
 | 
			
		||||
        $requestedEntityService = new RequestedEntityService();
 | 
			
		||||
        $requestedRightService = new RequestedRightService($requestedEntityService);
 | 
			
		||||
        $requestedUserService = new RequestedUserService($userSourceDirectorService, $requestedRightService);
 | 
			
		||||
        $this->requestedActionService = new RequestedActionService($requestedUserService);
 | 
			
		||||
        $this->requestedActionService->setActionType(ActionType::CREATE);
 | 
			
		||||
        $entityFormBuilderService = $this->createMock(RequestedActionFormBuilderServiceInterface::class);
 | 
			
		||||
        $formClassNameService = new FormClassNameService();
 | 
			
		||||
        $entityFormBuilderService = new RequestedActionFormBuilderService($formFactory, $formClassNameService, $this->requestedActionService);
 | 
			
		||||
        $this->request = new Request();
 | 
			
		||||
        $requestStack = $this->createMock(RequestStack::class);
 | 
			
		||||
        $requestStack->method('getCurrentRequest')->willReturn($this->request);
 | 
			
		||||
        $layerRepositoryFactoryService = $this->createMock(LayerRepositoryFactoryServiceInterface::class);
 | 
			
		||||
        $secureRequestedRightChecker = $this->createMock(SecureRequestedRightCheckerInterface::class);
 | 
			
		||||
        $this->actionService = new ActionService($this->requestedActionService, $secureRequestedRightChecker, $requestStack, $layerRepositoryFactoryService, $entityFormBuilderService, $entityManager);
 | 
			
		||||
 
 | 
			
		||||
@@ -54,7 +54,7 @@ class RequestedActionFormBuilderServiceIntegrationTest extends KernelTestCase
 | 
			
		||||
        $formClassNameService = new FormClassNameService();
 | 
			
		||||
        $layerRepositoryFactoryService = new LayerRepositoryFactoryService($entityManager);
 | 
			
		||||
        $this->requestedEntity = new RequestedEntityService($layerRepositoryFactoryService);
 | 
			
		||||
        $requestedRightService = new RequestedRightService();
 | 
			
		||||
        $requestedRightService = new RequestedRightService($this->requestedEntity);
 | 
			
		||||
        $requestedRightService->setRequestedEntity($this->requestedEntity);
 | 
			
		||||
        $requestedUserService = new RequestedUserService($userSourceDirectorService, $requestedRightService);
 | 
			
		||||
        $this->requestedActionService = new RequestedActionService($requestedUserService);
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,6 @@ use App\Entity\Source\AbstractSource;
 | 
			
		||||
use App\Domain\UserManagement\UserSourceDirectorInterface;
 | 
			
		||||
use App\Domain\RequestManagement\Right\RequestedRightInterface;
 | 
			
		||||
use App\Domain\RequestManagement\Right\RequestedRight;
 | 
			
		||||
use App\Repository\Source\SourceRepositoryInterface;
 | 
			
		||||
use App\Domain\RequestManagement\Entity\RequestedEntityInterface;
 | 
			
		||||
use App\DBAL\Types\SystemSlugType;
 | 
			
		||||
use App\Exception\SetNotPossibleException;
 | 
			
		||||
@@ -66,8 +65,7 @@ class AbstractRequestedRightFacadeTest extends TestCase
 | 
			
		||||
        $requestedEntity = $this->createMock(RequestedEntityInterface::class);
 | 
			
		||||
        $requestedEntity->method('getSlug')->willReturn(SystemSlugType::IMPRINT);
 | 
			
		||||
        $requestedEntity->method('hasSlug')->willReturn(true);
 | 
			
		||||
        $sourceRepository = $this->createMock(SourceRepositoryInterface::class);
 | 
			
		||||
        $requestedRight = new RequestedRight($sourceRepository);
 | 
			
		||||
        $requestedRight = new RequestedRight();
 | 
			
		||||
        $requestedRightFacade = $this->getRequestedRightFacade($requestedRight);
 | 
			
		||||
        $this->assertNull($requestedRightFacade->setLayer($layer));
 | 
			
		||||
        $this->assertNull($requestedRightFacade->setCrud($type));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user