diff --git a/lib/FieldType/DataTransformer/FieldValueTransformer.php b/lib/FieldType/DataTransformer/FieldValueTransformer.php index b2f29ded7..af4b6a34b 100644 --- a/lib/FieldType/DataTransformer/FieldValueTransformer.php +++ b/lib/FieldType/DataTransformer/FieldValueTransformer.php @@ -19,7 +19,7 @@ class FieldValueTransformer implements DataTransformerInterface { /** - * @var FieldType + * @var eZ\Publish\API\Repository\FieldType */ private $fieldType; @@ -32,7 +32,7 @@ public function __construct(FieldType $fieldType) * Transforms a FieldType Value into a hash using `FieldTpe::toHash()`. * This hash is compatible with `reverseTransform()`. * - * @param \eZ\Publish\SPI\FieldType\Value $value + * @param mixed $value * * @return array|null the value's hash, or null if $value was not a FieldType Value */ @@ -49,13 +49,13 @@ public function transform($value) * Transforms a hash into a FieldType Value using `FieldType::fromHash()`. * The FieldValue is compatible with `transform()`. * - * @param array $value + * @param mixed $value * * @return \eZ\Publish\SPI\FieldType\Value */ public function reverseTransform($value) { - if (!$value) { + if ($value === null) { return $this->fieldType->getEmptyValue(); } diff --git a/tests/RepositoryForms/FieldType/DataTransformer/FieldValueTransformerTest.php b/tests/RepositoryForms/FieldType/DataTransformer/FieldValueTransformerTest.php new file mode 100644 index 000000000..fb43fee1f --- /dev/null +++ b/tests/RepositoryForms/FieldType/DataTransformer/FieldValueTransformerTest.php @@ -0,0 +1,88 @@ +getMock(FieldType::class); + $fieldType + ->expects($this->never()) + ->method('toHash'); + + $result = (new FieldValueTransformer($fieldType))->transform($value); + + $this->assertNull($result); + } + + public function testTransform() + { + $value = $this->getMock(Value::class); + $valueHash = ['lorem' => 'Lorem ipsum dolor...']; + + $fieldType = $this->getMock(FieldType::class); + $fieldType + ->expects($this->once()) + ->method('toHash') + ->with($value) + ->willReturn($valueHash); + + $result = (new FieldValueTransformer($fieldType))->transform($value); + + $this->assertEquals($result, $valueHash); + } + + public function testReverseTransformNull() + { + $emptyValue = $this->getMock(Value::class); + + $fieldType = $this->getMock(FieldType::class); + $fieldType + ->expects($this->once()) + ->method('getEmptyValue') + ->willReturn($emptyValue); + $fieldType + ->expects($this->never()) + ->method('fromHash'); + + $result = (new FieldValueTransformer($fieldType))->reverseTransform(null); + + $this->assertSame($emptyValue, $result); + } + + public function testReverseTransform() + { + $value = 'Lorem ipsum dolor...'; + $expected = $this->getMock(Value::class); + + $fieldType = $this->getMock(FieldType::class); + $fieldType + ->expects($this->never()) + ->method('getEmptyValue'); + $fieldType + ->expects($this->once()) + ->method('fromHash') + ->willReturn($expected); + + $result = (new FieldValueTransformer($fieldType))->reverseTransform($value); + + $this->assertSame($expected, $result); + } +}