Тестирование entity transformer
This commit is contained in:
parent
d99f533981
commit
f0683ef40d
@ -2,6 +2,7 @@
|
||||
|
||||
namespace Rinsvent\RequestBundle\DependencyInjection;
|
||||
|
||||
use Rinsvent\RequestBundle\Service\Transformer\AbstractTransformer;
|
||||
use Symfony\Component\Config\FileLocator;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Extension\Extension;
|
||||
@ -13,5 +14,7 @@ class RequestExtension extends Extension
|
||||
{
|
||||
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||
$loader->load('services.yaml');
|
||||
|
||||
// $container->findTaggedServiceIds(AbstractTransformer::class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,10 +3,12 @@
|
||||
namespace Rinsvent\RequestBundle\EventListener;
|
||||
|
||||
use Rinsvent\Data2DTO\Data2DtoConverter;
|
||||
use Rinsvent\Data2DTO\Resolver\TransformerResolverStorage;
|
||||
use Rinsvent\RequestBundle\Annotation\RequestDTO;
|
||||
use Rinsvent\RequestBundle\DTO\Error;
|
||||
use Rinsvent\RequestBundle\DTO\ErrorCollection;
|
||||
use Rinsvent\AttributeExtractor\MethodExtractor;
|
||||
use Rinsvent\RequestBundle\Service\Transformer\ServiceResolver;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||
@ -15,10 +17,15 @@ use Symfony\Component\Validator\Validation;
|
||||
// todo базовая заготовка. Требуется рефакторинг
|
||||
class RequestListener
|
||||
{
|
||||
public const REQUEST_DATA = 'request_data';
|
||||
public function __construct(
|
||||
private ServiceResolver $serviceResolver
|
||||
) {}
|
||||
|
||||
public function onKernelRequest(RequestEvent $event)
|
||||
{
|
||||
$storage = TransformerResolverStorage::getInstance();
|
||||
$storage->add(ServiceResolver::TYPE, $this->serviceResolver);
|
||||
|
||||
$request = $event->getRequest();
|
||||
$controller = $request->get('_controller');
|
||||
if (is_string($controller)) {
|
||||
|
@ -7,4 +7,4 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
|
||||
class RequestBundle extends Bundle
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,12 @@ services:
|
||||
autowire: true
|
||||
|
||||
Rinsvent\RequestBundle\EventListener\RequestListener:
|
||||
autowire: true
|
||||
tags:
|
||||
- { name: kernel.event_listener, event: kernel.request }
|
||||
|
||||
Rinsvent\RequestBundle\Service\Transformer\:
|
||||
resource: '../../../src/Service/Transformer'
|
||||
|
||||
Rinsvent\RequestBundle\Service\Transformer\ServiceResolver:
|
||||
bind:
|
||||
$transformerLocator: !tagged_locator { tag: 'rinsvent.transformer', index_by: 'key', default_index_method: 'getLocatorKey' }
|
||||
|
@ -17,10 +17,10 @@ class EntityTransformer extends AbstractTransformer
|
||||
*/
|
||||
public function transform(&$data, Meta $meta): void
|
||||
{
|
||||
if (!is_int($data)) {
|
||||
if (!is_string($data)) {
|
||||
return;
|
||||
}
|
||||
$repository = $this->em->getRepository($meta->class);
|
||||
$data = $repository->find((int)$data);
|
||||
$data = $repository->find((string)$data);
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,8 @@ use Symfony\Component\DependencyInjection\ServiceLocator;
|
||||
|
||||
class ServiceResolver implements TransformerResolverInterface
|
||||
{
|
||||
public const TYPE = 'service';
|
||||
|
||||
public function __construct(
|
||||
private ServiceLocator $transformerLocator
|
||||
) {}
|
||||
@ -18,4 +20,4 @@ class ServiceResolver implements TransformerResolverInterface
|
||||
$transformerClass = $meta::class . 'Transformer';
|
||||
return $this->transformerLocator->get($transformerClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user