Mercurial > hg > isophonics-drupal-site
diff core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php @ 18:af1871eacc83
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:33:08 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line diff
--- a/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php Thu Feb 28 13:21:36 2019 +0000 +++ b/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php Thu May 09 15:33:08 2019 +0100 @@ -142,7 +142,7 @@ 'target_id' => (int) $this->user->id(), 'target_type' => $this->user->getEntityTypeId(), 'target_uuid' => $this->user->uuid(), - 'url' => $this->user->url(), + 'url' => $this->user->toUrl()->toString(), ], ], 'revision_id' => [ @@ -224,7 +224,7 @@ 'name' => '<name><value>' . $this->values['name'] . '</value></name>', 'type' => '<type><value>entity_test_mulrev</value></type>', 'created' => '<created><value>' . $expected_created['value'] . '</value><format>' . $expected_created['format'] . '</format></created>', - 'user_id' => '<user_id><target_id>' . $this->user->id() . '</target_id><target_type>' . $this->user->getEntityTypeId() . '</target_type><target_uuid>' . $this->user->uuid() . '</target_uuid><url>' . $this->user->url() . '</url></user_id>', + 'user_id' => '<user_id><target_id>' . $this->user->id() . '</target_id><target_type>' . $this->user->getEntityTypeId() . '</target_type><target_uuid>' . $this->user->uuid() . '</target_uuid><url>' . $this->user->toUrl()->toString() . '</url></user_id>', 'revision_id' => '<revision_id><value>' . $this->entity->getRevisionId() . '</value></revision_id>', 'default_langcode' => '<default_langcode><value>1</value></default_langcode>', 'revision_translation_affected' => '<revision_translation_affected><value>1</value></revision_translation_affected>', @@ -261,4 +261,92 @@ } } + /** + * Tests denormalizing serialized columns. + */ + public function testDenormalizeSerializedItem() { + $this->setExpectedException(\LogicException::class, 'The generic FieldItemNormalizer cannot denormalize string values for "value" properties of the "serialized" field (field item class: Drupal\entity_test\Plugin\Field\FieldType\SerializedItem).'); + $this->serializer->denormalize([ + 'serialized' => [ + [ + 'value' => 'boo', + ], + ], + 'type' => 'entity_test_serialized_field', + ], EntitySerializedField::class); + } + + /** + * Tests normalizing/denormalizing custom serialized columns. + */ + public function testDenormalizeCustomSerializedItem() { + $entity = EntitySerializedField::create(['serialized_text' => serialize(['Hello world!'])]); + $normalized = $this->serializer->normalize($entity); + $this->assertEquals($normalized['serialized_text'][0]['value'], ['Hello world!']); + $this->setExpectedException(\LogicException::class, 'The generic FieldItemNormalizer cannot denormalize string values for "value" properties of the "serialized_text" field (field item class: Drupal\entity_test\Plugin\Field\FieldType\SerializedPropertyItem).'); + $this->serializer->denormalize([ + 'serialized_text' => [ + [ + 'value' => 'boo', + ], + ], + 'type' => 'entity_test_serialized_field', + ], EntitySerializedField::class); + } + + /** + * Tests normalizing/denormalizing invalid custom serialized fields. + */ + public function testDenormalizeInvalidCustomSerializedField() { + $entity = EntitySerializedField::create(['serialized_long' => serialize(['Hello world!'])]); + $normalized = $this->serializer->normalize($entity); + $this->assertEquals($normalized['serialized_long'][0]['value'], ['Hello world!']); + $this->setExpectedException(\LogicException::class, 'The generic FieldItemNormalizer cannot denormalize string values for "value" properties of the "serialized_long" field (field item class: Drupal\Core\Field\Plugin\Field\FieldType\StringLongItem).'); + $this->serializer->denormalize([ + 'serialized_long' => [ + [ + 'value' => 'boo', + ], + ], + 'type' => 'entity_test_serialized_field', + ], EntitySerializedField::class); + } + + /** + * Tests normalizing/denormalizing empty custom serialized fields. + */ + public function testDenormalizeEmptyCustomSerializedField() { + $entity = EntitySerializedField::create(['serialized_long' => serialize([])]); + $normalized = $this->serializer->normalize($entity); + $this->assertEquals([], $normalized['serialized_long'][0]['value']); + + $entity = $this->serializer->denormalize($normalized, EntitySerializedField::class); + + $this->assertEquals(serialize([]), $entity->get('serialized_long')->value); + } + + /** + * Tests normalizing/denormalizing valid custom serialized fields. + */ + public function testDenormalizeValidCustomSerializedField() { + $entity = EntitySerializedField::create(['serialized_long' => serialize(['key' => 'value'])]); + $normalized = $this->serializer->normalize($entity); + $this->assertEquals(['key' => 'value'], $normalized['serialized_long'][0]['value']); + + $entity = $this->serializer->denormalize($normalized, EntitySerializedField::class); + + $this->assertEquals(serialize(['key' => 'value']), $entity->get('serialized_long')->value); + } + + /** + * Tests normalizing/denormalizing using string values. + */ + public function testDenormalizeStringValue() { + $this->setExpectedException(\LogicException::class, 'The generic FieldItemNormalizer cannot denormalize string values for "value" properties of the "serialized_long" field (field item class: Drupal\Core\Field\Plugin\Field\FieldType\StringLongItem).'); + $this->serializer->denormalize([ + 'serialized_long' => ['boo'], + 'type' => 'entity_test_serialized_field', + ], EntitySerializedField::class); + } + }