public function FieldItemSerializationTest::testCustomBooleanNormalization in Drupal 8
Same name and namespace in other branches
- 9 core/modules/serialization/tests/src/Kernel/FieldItemSerializationTest.php \Drupal\Tests\serialization\Kernel\FieldItemSerializationTest::testCustomBooleanNormalization()
Tests a format-agnostic normalizer.
@dataProvider providerTestCustomBooleanNormalization
Parameters
string[] $test_modules: The test modules to install.
string $format: The format to test. (NULL results in the format-agnostic normalization.)
File
- core/
modules/ serialization/ tests/ src/ Kernel/ FieldItemSerializationTest.php, line 171
Class
- FieldItemSerializationTest
- Test field level normalization process.
Namespace
Drupal\Tests\serialization\KernelCode
public function testCustomBooleanNormalization(array $test_modules, $format) {
// Asserts the entity contains the value we set.
$this
->assertSame(FALSE, $this->entity->field_test_boolean->value);
// Asserts normalizing the entity using core's 'serializer' service DOES
// yield the value we set.
$core_normalization = $this->container
->get('serializer')
->normalize($this->entity, $format);
$this
->assertSame(FALSE, $core_normalization['field_test_boolean'][0]['value']);
$assert_denormalization = function (array $normalization) use ($format) {
$denormalized_entity = $this->container
->get('serializer')
->denormalize($normalization, EntityTestMulRev::class, $format, []);
$this
->assertInstanceOf(EntityTestMulRev::class, $denormalized_entity);
$this
->assertSame(TRUE, $denormalized_entity->field_test_boolean->value);
};
// Asserts denormalizing the entity DOES yield the value we set:
// - when using the detailed representation
$core_normalization['field_test_boolean'][0]['value'] = TRUE;
$assert_denormalization($core_normalization);
// - and when using the shorthand representation
$core_normalization['field_test_boolean'][0] = TRUE;
$assert_denormalization($core_normalization);
// Install test module that contains a high-priority alternative normalizer.
$this
->enableModules($test_modules);
// Asserts normalizing the entity DOES NOT ANYMORE yield the value we set.
$core_normalization = $this->container
->get('serializer')
->normalize($this->entity, $format);
$this
->assertSame('๐', $core_normalization['field_test_boolean'][0]['value']);
// Asserts denormalizing the entity DOES NOT ANYMORE yield the value we set:
// - when using the detailed representation
$core_normalization['field_test_boolean'][0]['value'] = '๐';
$assert_denormalization($core_normalization);
// - and when using the shorthand representation
$core_normalization['field_test_boolean'][0] = '๐';
$assert_denormalization($core_normalization);
}