e85b55600a437f936fb192e55e1765239a7c837b
[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     $encoder_1_definition = new Definition('TestClass');
25     $encoder_1_definition->addTag('encoder', ['format' => 'xml']);
26     $encoder_1_definition->addTag('_provider', ['provider' => 'test_provider_a']);
27     $container->setDefinition('encoder_1', $encoder_1_definition);
28
29     $encoder_2_definition = new Definition('TestClass');
30     $encoder_2_definition->addTag('encoder', ['format' => 'json']);
31     $encoder_2_definition->addTag('_provider', ['provider' => 'test_provider_a']);
32     $container->setDefinition('encoder_2', $encoder_2_definition);
33
34     $encoder_3_definition = new Definition('TestClass');
35     $encoder_3_definition->addTag('encoder', ['format' => 'hal_json']);
36     $encoder_3_definition->addTag('_provider', ['provider' => 'test_provider_b']);
37     $container->setDefinition('encoder_3', $encoder_3_definition);
38
39     $normalizer_1_definition = new Definition('TestClass');
40     $normalizer_1_definition->addTag('normalizer');
41     $container->setDefinition('normalizer_1', $normalizer_1_definition);
42
43     $compiler_pass = new RegisterSerializationClassesCompilerPass();
44     $compiler_pass->process($container);
45
46     // Check registration of formats and providers.
47     $this->assertEquals(['xml', 'json', 'hal_json'], $container->getParameter('serializer.formats'));
48     $this->assertEquals(['xml' => 'test_provider_a', 'json' => 'test_provider_a', 'hal_json' => 'test_provider_b'], $container->getParameter('serializer.format_providers'));
49
50     // Check all encoder and normalizer service definitions are marked private.
51     $this->assertFalse($encoder_1_definition->isPublic());
52     $this->assertFalse($encoder_2_definition->isPublic());
53     $this->assertFalse($encoder_3_definition->isPublic());
54
55     $this->assertFalse($normalizer_1_definition->isPublic());
56   }
57
58 }