diff --git a/core/modules/text/src/Normalizer/TextItemBaseNormalizer.php b/core/modules/text/src/Normalizer/TextItemBaseNormalizer.php new file mode 100644 index 0000000..86bfeb7 --- /dev/null +++ b/core/modules/text/src/Normalizer/TextItemBaseNormalizer.php @@ -0,0 +1,31 @@ +getValue(); + // The processed output will be markup, so cast it to a scalar string. + $attributes['processed'] = (string) $object->processed; + return $attributes; + } + +} diff --git a/core/modules/text/src/Normalizer/TextItemNormalizer.php b/core/modules/text/src/Normalizer/TextItemNormalizer.php deleted file mode 100644 index 9b8cfbc..0000000 --- a/core/modules/text/src/Normalizer/TextItemNormalizer.php +++ /dev/null @@ -1,32 +0,0 @@ -getValue(); - $attributes->processed = check_markup($object->value, $object->format); - - return $object->getValue(); - } - -} diff --git a/core/modules/text/src/TextItemServiceProvider.php b/core/modules/text/src/TextServiceProvider.php similarity index 67% rename from core/modules/text/src/TextItemServiceProvider.php rename to core/modules/text/src/TextServiceProvider.php index 1a6eef6..d2aac27 100644 --- a/core/modules/text/src/TextItemServiceProvider.php +++ b/core/modules/text/src/TextServiceProvider.php @@ -1,19 +1,16 @@ getParameter('container.modules'); if (isset($modules['serialization'])) { - $service_definition = new Definition('Drupal\text\Normalizer\TextItemNormalizer', []); + $service_definition = new Definition(TextItemBaseNormalizer::class, []); + $service_definition->addTag('normalizer', ['priority' => 20]); $container->setDefinition('serializer.normalizer.text', $service_definition); } } diff --git a/core/modules/text/tests/src/Kernel/Normalizer/TextItemBaseNormalizerTest.php b/core/modules/text/tests/src/Kernel/Normalizer/TextItemBaseNormalizerTest.php new file mode 100644 index 0000000..fa4be63 --- /dev/null +++ b/core/modules/text/tests/src/Kernel/Normalizer/TextItemBaseNormalizerTest.php @@ -0,0 +1,65 @@ +installEntitySchema('entity_test'); + $this->installEntitySchema('user'); + $this->installConfig('filter'); + + $field_storage_config = FieldStorageConfig::create([ + 'entity_type' => 'entity_test', + 'field_name' => 'field_text', + 'type' => 'text' + ]); + $field_storage_config->save(); + + $field_config = FieldConfig::create([ + 'entity_type' => 'entity_test', + 'field_name' => 'field_text', + 'bundle' => 'entity_test', + ]); + $field_config->save(); + } + + /** + * @covers ::normalize + */ + public function testNormalize() { + /** @var \Symfony\Component\Serializer\Serializer $serializer */ + $serializer = \Drupal::service('serializer'); + + $entity = EntityTest::create([ + 'field_text' => 'text item', + ]); + $entity->save(); + + $data = $serializer->normalize($entity); + $this->assertEquals([ + 'value' => 'text item', + 'processed' => "

text item

\n", + ], $data['field_text'][0]); + } + +}