comparison core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents a9cd425dd02b
children
comparison
equal deleted inserted replaced
4:a9cd425dd02b 5:12f9dff5fda9
140 [ 140 [
141 // id() will return the string value as it comes from the database. 141 // id() will return the string value as it comes from the database.
142 'target_id' => (int) $this->user->id(), 142 'target_id' => (int) $this->user->id(),
143 'target_type' => $this->user->getEntityTypeId(), 143 'target_type' => $this->user->getEntityTypeId(),
144 'target_uuid' => $this->user->uuid(), 144 'target_uuid' => $this->user->uuid(),
145 'url' => $this->user->url(), 145 'url' => $this->user->toUrl()->toString(),
146 ], 146 ],
147 ], 147 ],
148 'revision_id' => [ 148 'revision_id' => [
149 ['value' => 1], 149 ['value' => 1],
150 ], 150 ],
222 'uuid' => '<uuid><value>' . $this->entity->uuid() . '</value></uuid>', 222 'uuid' => '<uuid><value>' . $this->entity->uuid() . '</value></uuid>',
223 'langcode' => '<langcode><value>en</value></langcode>', 223 'langcode' => '<langcode><value>en</value></langcode>',
224 'name' => '<name><value>' . $this->values['name'] . '</value></name>', 224 'name' => '<name><value>' . $this->values['name'] . '</value></name>',
225 'type' => '<type><value>entity_test_mulrev</value></type>', 225 'type' => '<type><value>entity_test_mulrev</value></type>',
226 'created' => '<created><value>' . $expected_created['value'] . '</value><format>' . $expected_created['format'] . '</format></created>', 226 'created' => '<created><value>' . $expected_created['value'] . '</value><format>' . $expected_created['format'] . '</format></created>',
227 '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>', 227 '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>',
228 'revision_id' => '<revision_id><value>' . $this->entity->getRevisionId() . '</value></revision_id>', 228 'revision_id' => '<revision_id><value>' . $this->entity->getRevisionId() . '</value></revision_id>',
229 'default_langcode' => '<default_langcode><value>1</value></default_langcode>', 229 'default_langcode' => '<default_langcode><value>1</value></default_langcode>',
230 'revision_translation_affected' => '<revision_translation_affected><value>1</value></revision_translation_affected>', 230 'revision_translation_affected' => '<revision_translation_affected><value>1</value></revision_translation_affected>',
231 'non_mul_field' => '<non_mul_field/>', 231 'non_mul_field' => '<non_mul_field/>',
232 'non_rev_field' => '<non_rev_field/>', 232 'non_rev_field' => '<non_rev_field/>',
259 $this->assertIdentical($denormalized->bundle(), $this->entity->bundle(), 'Expected entity bundle found.'); 259 $this->assertIdentical($denormalized->bundle(), $this->entity->bundle(), 'Expected entity bundle found.');
260 $this->assertIdentical($denormalized->uuid(), $this->entity->uuid(), 'Expected entity UUID found.'); 260 $this->assertIdentical($denormalized->uuid(), $this->entity->uuid(), 'Expected entity UUID found.');
261 } 261 }
262 } 262 }
263 263
264 /**
265 * Tests denormalizing serialized columns.
266 */
267 public function testDenormalizeSerializedItem() {
268 $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).');
269 $this->serializer->denormalize([
270 'serialized' => [
271 [
272 'value' => 'boo',
273 ],
274 ],
275 'type' => 'entity_test_serialized_field',
276 ], EntitySerializedField::class);
277 }
278
279 /**
280 * Tests normalizing/denormalizing custom serialized columns.
281 */
282 public function testDenormalizeCustomSerializedItem() {
283 $entity = EntitySerializedField::create(['serialized_text' => serialize(['Hello world!'])]);
284 $normalized = $this->serializer->normalize($entity);
285 $this->assertEquals($normalized['serialized_text'][0]['value'], ['Hello world!']);
286 $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).');
287 $this->serializer->denormalize([
288 'serialized_text' => [
289 [
290 'value' => 'boo',
291 ],
292 ],
293 'type' => 'entity_test_serialized_field',
294 ], EntitySerializedField::class);
295 }
296
297 /**
298 * Tests normalizing/denormalizing invalid custom serialized fields.
299 */
300 public function testDenormalizeInvalidCustomSerializedField() {
301 $entity = EntitySerializedField::create(['serialized_long' => serialize(['Hello world!'])]);
302 $normalized = $this->serializer->normalize($entity);
303 $this->assertEquals($normalized['serialized_long'][0]['value'], ['Hello world!']);
304 $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).');
305 $this->serializer->denormalize([
306 'serialized_long' => [
307 [
308 'value' => 'boo',
309 ],
310 ],
311 'type' => 'entity_test_serialized_field',
312 ], EntitySerializedField::class);
313 }
314
315 /**
316 * Tests normalizing/denormalizing empty custom serialized fields.
317 */
318 public function testDenormalizeEmptyCustomSerializedField() {
319 $entity = EntitySerializedField::create(['serialized_long' => serialize([])]);
320 $normalized = $this->serializer->normalize($entity);
321 $this->assertEquals([], $normalized['serialized_long'][0]['value']);
322
323 $entity = $this->serializer->denormalize($normalized, EntitySerializedField::class);
324
325 $this->assertEquals(serialize([]), $entity->get('serialized_long')->value);
326 }
327
328 /**
329 * Tests normalizing/denormalizing valid custom serialized fields.
330 */
331 public function testDenormalizeValidCustomSerializedField() {
332 $entity = EntitySerializedField::create(['serialized_long' => serialize(['key' => 'value'])]);
333 $normalized = $this->serializer->normalize($entity);
334 $this->assertEquals(['key' => 'value'], $normalized['serialized_long'][0]['value']);
335
336 $entity = $this->serializer->denormalize($normalized, EntitySerializedField::class);
337
338 $this->assertEquals(serialize(['key' => 'value']), $entity->get('serialized_long')->value);
339 }
340
341 /**
342 * Tests normalizing/denormalizing using string values.
343 */
344 public function testDenormalizeStringValue() {
345 $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).');
346 $this->serializer->denormalize([
347 'serialized_long' => ['boo'],
348 'type' => 'entity_test_serialized_field',
349 ], EntitySerializedField::class);
350 }
351
264 } 352 }