View source
<?php
namespace Drupal\Tests\serialization\Unit\CompilerPass;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\serialization\RegisterSerializationClassesCompilerPass;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\Serializer\Serializer;
class RegisterSerializationClassesCompilerPassTest extends UnitTestCase {
public function testEncoders() {
$container = new ContainerBuilder();
$serializer_definition = new Definition(Serializer::class, [
[],
[],
]);
$serializer_definition
->setPublic(TRUE);
$container
->setDefinition('serializer', $serializer_definition);
$encoder_1_definition = new Definition('TestClass');
$encoder_1_definition
->addTag('encoder', [
'format' => 'xml',
]);
$encoder_1_definition
->addTag('_provider', [
'provider' => 'test_provider_a',
]);
$encoder_1_definition
->setPublic(TRUE);
$container
->setDefinition('encoder_1', $encoder_1_definition);
$encoder_2_definition = new Definition('TestClass');
$encoder_2_definition
->addTag('encoder', [
'format' => 'json',
]);
$encoder_2_definition
->addTag('_provider', [
'provider' => 'test_provider_a',
]);
$encoder_2_definition
->setPublic(TRUE);
$container
->setDefinition('encoder_2', $encoder_2_definition);
$encoder_3_definition = new Definition('TestClass');
$encoder_3_definition
->addTag('encoder', [
'format' => 'hal_json',
]);
$encoder_3_definition
->addTag('_provider', [
'provider' => 'test_provider_b',
]);
$encoder_3_definition
->setPublic(TRUE);
$container
->setDefinition('encoder_3', $encoder_3_definition);
$normalizer_1_definition = new Definition('TestClass');
$normalizer_1_definition
->addTag('normalizer');
$normalizer_1_definition
->setPublic(TRUE);
$container
->setDefinition('normalizer_1', $normalizer_1_definition);
$compiler_pass = new RegisterSerializationClassesCompilerPass();
$compiler_pass
->process($container);
$this
->assertEquals([
'xml',
'json',
'hal_json',
], $container
->getParameter('serializer.formats'));
$this
->assertEquals([
'xml' => 'test_provider_a',
'json' => 'test_provider_a',
'hal_json' => 'test_provider_b',
], $container
->getParameter('serializer.format_providers'));
$this
->assertFalse($encoder_1_definition
->isPublic());
$this
->assertFalse($encoder_2_definition
->isPublic());
$this
->assertFalse($encoder_3_definition
->isPublic());
$this
->assertFalse($normalizer_1_definition
->isPublic());
}
}