Server IP : 66.29.132.122 / Your IP : 18.190.217.167 Web Server : LiteSpeed System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : admazpex ( 531) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/opt/cloudlinux/alt-php55/root/usr/share/pear/test/Serializer/Symfony/Component/Serializer/Tests/Normalizer/ |
Upload File : |
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Tests\Normalizer; use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer; use Symfony\Component\Serializer\SerializerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; class GetSetMethodNormalizerTest extends \PHPUnit_Framework_TestCase { protected function setUp() { $this->serializer = $this->getMock(__NAMESPACE__.'\SerializerNormalizer'); $this->normalizer = new GetSetMethodNormalizer(); $this->normalizer->setSerializer($this->serializer); } public function testNormalize() { $obj = new GetSetDummy(); $object = new \stdClass(); $obj->setFoo('foo'); $obj->setBar('bar'); $obj->setCamelCase('camelcase'); $obj->setObject($object); $this->serializer ->expects($this->once()) ->method('normalize') ->with($object, 'any') ->will($this->returnValue('string_object')) ; $this->assertEquals( array( 'foo' => 'foo', 'bar' => 'bar', 'fooBar' => 'foobar', 'camelCase' => 'camelcase', 'object' => 'string_object', ), $this->normalizer->normalize($obj, 'any') ); } public function testDenormalize() { $obj = $this->normalizer->denormalize( array('foo' => 'foo', 'bar' => 'bar', 'fooBar' => 'foobar'), __NAMESPACE__.'\GetSetDummy', 'any' ); $this->assertEquals('foo', $obj->getFoo()); $this->assertEquals('bar', $obj->getBar()); } public function testDenormalizeOnCamelCaseFormat() { $this->normalizer->setCamelizedAttributes(array('camel_case')); $obj = $this->normalizer->denormalize( array('camel_case' => 'camelCase'), __NAMESPACE__.'\GetSetDummy' ); $this->assertEquals('camelCase', $obj->getCamelCase()); } /** * @dataProvider attributeProvider */ public function testFormatAttribute($attribute, $camelizedAttributes, $result) { $r = new \ReflectionObject($this->normalizer); $m = $r->getMethod('formatAttribute'); $m->setAccessible(true); $this->normalizer->setCamelizedAttributes($camelizedAttributes); $this->assertEquals($m->invoke($this->normalizer, $attribute, $camelizedAttributes), $result); } public function attributeProvider() { return array( array('attribute_test', array('attribute_test'),'AttributeTest'), array('attribute_test', array('any'),'attribute_test'), array('attribute', array('attribute'),'Attribute'), array('attribute', array(), 'attribute'), ); } public function testConstructorDenormalize() { $obj = $this->normalizer->denormalize( array('foo' => 'foo', 'bar' => 'bar', 'fooBar' => 'foobar'), __NAMESPACE__.'\GetConstructorDummy', 'any'); $this->assertEquals('foo', $obj->getFoo()); $this->assertEquals('bar', $obj->getBar()); } /** * @dataProvider provideCallbacks */ public function testCallbacks($callbacks, $value, $result, $message) { $this->normalizer->setCallbacks($callbacks); $obj = new GetConstructorDummy('', $value); $this->assertEquals( $result, $this->normalizer->normalize($obj, 'any'), $message ); } /** * @expectedException \InvalidArgumentException */ public function testUncallableCallbacks() { $this->normalizer->setCallbacks(array('bar' => null)); $obj = new GetConstructorDummy('baz', 'quux'); $this->normalizer->normalize($obj, 'any'); } public function testIgnoredAttributes() { $this->normalizer->setIgnoredAttributes(array('foo', 'bar', 'camelCase', 'object')); $obj = new GetSetDummy(); $obj->setFoo('foo'); $obj->setBar('bar'); $this->assertEquals( array('fooBar' => 'foobar'), $this->normalizer->normalize($obj, 'any') ); } public function provideCallbacks() { return array( array( array( 'bar' => function ($bar) { return 'baz'; }, ), 'baz', array('foo' => '', 'bar' => 'baz'), 'Change a string', ), array( array( 'bar' => function ($bar) { return null; }, ), 'baz', array('foo' => '', 'bar' => null), 'Null an item' ), array( array( 'bar' => function ($bar) { return $bar->format('d-m-Y H:i:s'); }, ), new \DateTime('2011-09-10 06:30:00'), array('foo' => '', 'bar' => '10-09-2011 06:30:00'), 'Format a date', ), array( array( 'bar' => function ($bars) { $foos = ''; foreach ($bars as $bar) { $foos .= $bar->getFoo(); } return $foos; }, ), array(new GetConstructorDummy('baz', ''), new GetConstructorDummy('quux', '')), array('foo' => '', 'bar' => 'bazquux'), 'Collect a property', ), array( array( 'bar' => function ($bars) { return count($bars); }, ), array(new GetConstructorDummy('baz', ''), new GetConstructorDummy('quux', '')), array('foo' => '', 'bar' => 2), 'Count a property', ), ); } /** * @expectedException \LogicException * @expectedExceptionMessage Cannot normalize attribute "object" because injected serializer is not a normalizer */ public function testUnableToNormalizeObjectAttribute() { $serializer = $this->getMock('Symfony\Component\Serializer\SerializerInterface'); $this->normalizer->setSerializer($serializer); $obj = new GetSetDummy(); $object = new \stdClass(); $obj->setObject($object); $this->normalizer->normalize($obj, 'any'); } } class GetSetDummy { protected $foo; private $bar; protected $camelCase; protected $object; public function getFoo() { return $this->foo; } public function setFoo($foo) { $this->foo = $foo; } public function getBar() { return $this->bar; } public function setBar($bar) { $this->bar = $bar; } public function getFooBar() { return $this->foo.$this->bar; } public function getCamelCase() { return $this->camelCase; } public function setCamelCase($camelCase) { $this->camelCase = $camelCase; } public function otherMethod() { throw new \RuntimeException("Dummy::otherMethod() should not be called"); } public function setObject($object) { $this->object = $object; } public function getObject() { return $this->object; } } class GetConstructorDummy { protected $foo; private $bar; public function __construct($foo, $bar) { $this->foo = $foo; $this->bar = $bar; } public function getFoo() { return $this->foo; } public function getBar() { return $this->bar; } public function otherMethod() { throw new \RuntimeException("Dummy::otherMethod() should not be called"); } } abstract class SerializerNormalizer implements SerializerInterface, NormalizerInterface { }