core/modules/media/media.services.yml | 6 ++ .../src/Kernel/MediaEntitiesNormalizerTest.php | 95 ++++++++++++++++++++++ 2 files changed, 101 insertions(+) diff --git a/core/modules/media/media.services.yml b/core/modules/media/media.services.yml index f22f90a..b61f7d2 100644 --- a/core/modules/media/media.services.yml +++ b/core/modules/media/media.services.yml @@ -8,3 +8,9 @@ services: arguments: ['@entity_type.manager'] tags: - { name: access_check, applies_to: _access_media_revision } + + # @todo Remove this in https://www.drupal.org/node/2895573 + serializer.normalizer.media: + class: Drupal\media\Normalizer\MediaEntitiesNormalizer + tags: + - { name: normalizer, priority: 1000 } diff --git a/core/modules/media/tests/src/Kernel/MediaEntitiesNormalizerTest.php b/core/modules/media/tests/src/Kernel/MediaEntitiesNormalizerTest.php new file mode 100644 index 0000000..d227631 --- /dev/null +++ b/core/modules/media/tests/src/Kernel/MediaEntitiesNormalizerTest.php @@ -0,0 +1,95 @@ +setExpectedException(UnsupportedException::class, "Normalizing $entity_type_id entities is not yet supported."); + + $media_type = $this->createMediaType(); + if ($entity_type_id === 'media') { + $media = Media::create([ + 'bundle' => $media_type->id(), + 'name' => 'Unnamed', + ]); + } + $entity_under_test = $entity_type_id === 'media' ? $media : $media_type; + + $this->container->get('serializer')->$operation($entity_under_test, 'json'); + } + + public function providerTestNormalize() { + return [ + 'normalize Media' => ['media', 'normalize'], + 'serialize Media' => ['media', 'serialize'], + 'normalize Media Type' => ['media_type', 'normalize'], + 'serialize Media Type' => ['media_type', 'serialize'], + ]; + } + + /** + * @covers ::denormalize + * @dataProvider providerTestDenormalize + */ + public function testDenormalize($entity_type_id, $operation) { + $this->setExpectedException(UnsupportedException::class, "Denormalizing $entity_type_id entities is not yet supported."); + + $data = []; + $class = MediaType::class; + if ($entity_type_id === 'media') { + $media_type = $this->createMediaType(); + $data = ['bundle' => $media_type->id()]; + $class = Media::class; + } + + if ($operation === 'deserialize') { + $data = Json::encode($data); + } + + $this->container->get('serializer')->$operation($data, $class, 'json'); + } + + public function providerTestDenormalize() { + return [ + 'denormalize Media' => ['media', 'denormalize'], + 'deserialize Media' => ['media', 'deserialize'], + 'denormalize Media Type' => ['media_type', 'denormalize'], + 'deserialize Media Type' => ['media_type', 'deserialize'], + ]; + } + +}