<?php namespace tests\Integration\Domain\FormManagement; use Symfony\Component\Form\FormBuilderInterface; use App\Domain\RequestManagement\Entity\RequestedEntityInterface; use App\Entity\Source\PureSource; use App\Domain\FormManagement\RequestedActionFormBuilderService; use App\Domain\RequestManagement\Action\RequestedActionServiceInterface; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use App\Domain\FormManagement\FormClassNameService; use App\Domain\RequestManagement\Action\RequestedActionService; use App\Domain\RequestManagement\User\RequestedUserService; use App\Domain\RequestManagement\Right\RequestedRightService; use App\Domain\UserManagement\UserSourceDirectorServiceInterface; use App\DBAL\Types\ActionType; use App\Domain\RequestManagement\Entity\RequestedEntityService; use App\Domain\RepositoryManagement\LayerRepositoryFactoryService; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Form\Form; /** * @author kevinfrantz */ class RequestedActionFormBuilderServiceIntegrationTest extends KernelTestCase { /** * @var RequestedActionServiceInterface */ private $requestedActionService; /** * @var RequestedActionFormBuilderService */ private $requestedActionFormBuilderService; /** * @var RequestedEntityInterface */ private $requestedEntity; /** * {@inheritdoc} * * @see \PHPUnit\Framework\TestCase::setUp() */ public function setUp(): void { self::bootKernel(); $formFactory = self::$container->get('form.factory'); //$entityManager = self::$container->get('doctrine.orm.default_entity_manager'); $entityManager = $this->createMock(EntityManagerInterface::class); $userSourceDirectorService = $this->createMock(UserSourceDirectorServiceInterface::class); $formClassNameService = new FormClassNameService(); $layerRepositoryFactoryService = new LayerRepositoryFactoryService($entityManager); $this->requestedEntity = new RequestedEntityService($layerRepositoryFactoryService); $requestedRightService = new RequestedRightService($this->requestedEntity); $requestedRightService->setRequestedEntity($this->requestedEntity); $requestedUserService = new RequestedUserService($userSourceDirectorService, $requestedRightService); $this->requestedActionService = new RequestedActionService($requestedUserService); $this->requestedActionService->setActionType(ActionType::CREATE); $this->requestedActionFormBuilderService = new RequestedActionFormBuilderService($formFactory, $formClassNameService, $this->requestedActionService); } public function testCreate(): void { $class = PureSource::class; $this->requestedEntity->setClass($class); $result = $this->requestedActionFormBuilderService->create($this->requestedActionService); $this->assertInstanceOf(FormBuilderInterface::class, $result); $this->assertInstanceOf(Form::class, $result->getForm()); $this->assertTrue(method_exists($result->getForm(), 'isValid')); //Tests if the origine builder and the service function return the same value by the requestedActionService $this->assertEquals($this->requestedActionFormBuilderService->create($this->requestedActionService), $this->requestedActionFormBuilderService->createByService()); } }