f9a5b7729806e30e91e5bf85340f54824d39fe8b
[yaffs-website] / web / core / modules / serialization / tests / src / Unit / CompilerPass / RegisterSerializationClassesCompilerPassTest.php
1 <?php
2
3 namespace Drupal\Tests\serialization\Unit\CompilerPass;
4
5 use Drupal\Core\DependencyInjection\ContainerBuilder;
6 use Drupal\serialization\RegisterSerializationClassesCompilerPass;
7 use Drupal\Tests\UnitTestCase;
8 use Symfony\Component\DependencyInjection\Definition;
9 use Symfony\Component\Serializer\Serializer;
10
11 /**
12  * @coversDefaultClass \Drupal\serialization\RegisterSerializationClassesCompilerPass
13  * @group serialization
14  */
15 class RegisterSerializationClassesCompilerPassTest extends UnitTestCase {
16
17   /**
18    * @covers ::process
19    */
20   public function testEncoders() {
21     $container = new ContainerBuilder();
22     $container->setDefinition('serializer', new Definition(Serializer::class, [[], []]));
23
24     $definition = new Definition('TestClass');
25     $definition->addTag('encoder', ['format' => 'xml']);
26     $definition->addTag('_provider', ['provider' => 'test_provider_a']);
27     $container->setDefinition('encoder_1', $definition);
28
29     $definition = new Definition('TestClass');
30     $definition->addTag('encoder', ['format' => 'json']);
31     $definition->addTag('_provider', ['provider' => 'test_provider_a']);
32     $container->setDefinition('encoder_2', $definition);
33
34     $definition = new Definition('TestClass');
35     $definition->addTag('encoder', ['format' => 'hal_json']);
36     $definition->addTag('_provider', ['provider' => 'test_provider_b']);
37     $container->setDefinition('encoder_3', $definition);
38
39     $compiler_pass = new RegisterSerializationClassesCompilerPass();
40     $compiler_pass->process($container);
41
42     $this->assertEquals(['xml', 'json', 'hal_json'], $container->getParameter('serializer.formats'));
43     $this->assertEquals(['xml' => 'test_provider_a', 'json' => 'test_provider_a', 'hal_json' => 'test_provider_b'], $container->getParameter('serializer.format_providers'));
44   }
45
46 }