X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fserialization%2Ftests%2Fsrc%2FKernel%2FMapDataNormalizerTest.php;fp=web%2Fcore%2Fmodules%2Fserialization%2Ftests%2Fsrc%2FKernel%2FMapDataNormalizerTest.php;h=32dc0826520688cf4e50b9ef3b594a9656c2912a;hp=0000000000000000000000000000000000000000;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/web/core/modules/serialization/tests/src/Kernel/MapDataNormalizerTest.php b/web/core/modules/serialization/tests/src/Kernel/MapDataNormalizerTest.php new file mode 100644 index 000000000..32dc08265 --- /dev/null +++ b/web/core/modules/serialization/tests/src/Kernel/MapDataNormalizerTest.php @@ -0,0 +1,136 @@ +serializer = \Drupal::service('serializer'); + $this->typedDataManager = \Drupal::typedDataManager(); + } + + /** + * Tests whether map data can be normalized. + */ + public function testMapNormalize() { + $typed_data = $this->buildExampleTypedData(); + $data = $this->serializer->normalize($typed_data, 'json'); + $expect_value = [ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 3, + 'key4' => [ + 0 => TRUE, + 1 => 'value6', + 'key7' => 'value7', + ], + ]; + $this->assertSame($expect_value, $data); + } + + /** + * Test whether map data with properties can be normalized. + */ + public function testMapWithPropertiesNormalize() { + $typed_data = $this->buildExampleTypedDataWithProperties(); + $data = $this->serializer->normalize($typed_data, 'json'); + $expect_value = [ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 3, + 'key4' => [ + 0 => TRUE, + 1 => 'value6', + 'key7' => 'value7', + ], + ]; + $this->assertSame($expect_value, $data); + } + + /** + * Builds some example typed data object with no properties. + */ + protected function buildExampleTypedData() { + $tree = [ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 3, + 'key4' => [ + 0 => TRUE, + 1 => 'value6', + 'key7' => 'value7', + ], + ]; + $map_data_definition = MapDataDefinition::create(); + $typed_data = $this->typedDataManager->create( + $map_data_definition, + $tree, + 'test name' + ); + return $typed_data; + } + + /** + * Builds some example typed data object with properties. + */ + protected function buildExampleTypedDataWithProperties() { + $tree = [ + 'key1' => 'value1', + 'key2' => 'value2', + 'key3' => 3, + 'key4' => [ + 0 => TRUE, + 1 => 'value6', + 'key7' => 'value7', + ], + ]; + $map_data_definition = MapDataDefinition::create() + ->setPropertyDefinition('key1', DataDefinition::create('string')) + ->setPropertyDefinition('key2', DataDefinition::create('string')) + ->setPropertyDefinition('key3', DataDefinition::create('integer')) + ->setPropertyDefinition('key4', MapDataDefinition::create() + ->setPropertyDefinition(0, DataDefinition::create('boolean')) + ->setPropertyDefinition(1, DataDefinition::create('string')) + ->setPropertyDefinition('key7', DataDefinition::create('string')) + ); + + $typed_data = $this->typedDataManager->create( + $map_data_definition, + $tree, + 'test name' + ); + + return $typed_data; + } + +}